У меня есть файл сценария удара, где я выполняю набор команд.
#!/bin/bash
umount /media/hdd1
umount /media/hdd2
something1
something2
Но так как команды позже в файле работают с umounted жестким диском, я должен удостовериться, что umount успешен перед продолжением.
Я могу, конечно, проверить, выходят ли неудавшиеся umount и просто 1, но это не идеально.
Так в основном то, что я хотел бы сделать, так или иначе заставляют команду umount ожидать, пока устройство не занято и затем umount жесткий диск, и продолжите выполнять сценарий.
Это таким образом работало бы как это:
#!/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
Спасибо.
Я думаю, что следующий сценарий сделает задание. Это должно быть выполнено с sudo
(полномочия суперпользователя).
существует функция doer
с while
цикл, который сверяется mountpoint
, если устройство смонтировано в указанной точке монтирования, и если это, попытки размонтировать его с umount
. Когда логическая переменная busy
является ложью, while
, цикл закончен, и сценарий может начать 'делать некоторые вещи'.
#!/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'