首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使umount等待,直到设备不忙?

如何使umount等待,直到设备不忙?
EN

Ask Ubuntu用户
提问于 2018-10-14 08:40:53
回答 1查看 5.9K关注 0票数 3

我有一个bash脚本文件,在这里我执行了一堆命令。

代码语言:javascript
复制
#!/bin/bash
umount /media/hdd1
umount /media/hdd2
something1
something2

但是由于文件后面的组件与umounted一起工作,我需要确保umount在继续之前是成功的。

当然,我可以检查一下umount是否失败并退出1,但这并不理想。

基本上,我想做的是,让umount命令等待,直到设备不忙,然后启动HDD并继续执行脚本。

因此,它的工作方式如下:

代码语言:javascript
复制
#!/bin/bash
umount /media/hdd1 # Device umounted without any problems continuing the script..
umount /media/hdd2 # Device is busy! Let's just sit around and wait until it isn't... let's say 5 minutes later whatever was accessing that HDD isn't anymore and the umount umounts the HDD and the script continues
something1
something2

谢谢。

EN

回答 1

Ask Ubuntu用户

发布于 2018-10-14 09:56:26

我认为下面的脚本将完成这项工作。它应该使用sudo (超级用户权限)运行。

有一个带有doer循环的函数while,它使用mountpoint检查设备是否安装在指定的挂载点,如果是,则尝试用umount卸载设备。当逻辑变量busy为false时,while循环就完成了,脚本可以开始“做一些事情”。

代码语言:javascript
复制
#!/bin/bash


function doer() {

busy=true
while $busy
do
 if mountpoint -q "$1"
 then
  umount "$1" 2> /dev/null
  if [ $? -eq 0 ]
  then
   busy=false  # umount successful
  else
   echo -n '.'  # output to show that the script is alive
   sleep 5      # 5 seconds for testing, modify to 300 seconds later on
  fi
 else
  busy=false  # not mounted
 fi
done
}

########################

# main

########################

doer /media/hdd1
doer /media/hdd2

echo ''
echo 'doing something1'
echo 'doing something2'
票数 6
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1083624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档