Сценарии init
запускаются в порядке, определенном номерами S ##. Более новые версии Unix (по крайней мере, в Linux) запускают одни и те же номера ## параллельно (хотя вы можете отключить эту функцию ...) Все, что вам нужно сделать, это использовать ## после сети и fsmount
номер. Тогда должно работать. Однако, если fsmount
запускается в фоновом режиме, проще всего проверить файлы на смонтированном диске. Примерно так:
while ! test -f /mnt/over-there/this/file/here
do
sleep 1
done
Это подождет, пока файл не появится. Если еще не сделано, спите на секунду, а затем повторите попытку.
Чтобы избежать потенциальной проблемы, связанной с созданием кем-то тестируемого файла на локальном компьютере, вы можете вместо этого использовать командную строку точка монтирования
как в:
while ! mountpoint -q /mnt/over-there
do
sleep 1
done
(Из комментария ниже.) -q
делает команду тихой.
--- Обновление: тайм-аут после 30 попыток
В сценарии оболочки вы также можете подсчитывать и проверять числа:
count=0
while ! test -f /mnt/over-there/this/file/here
do
sleep 1
count=`expr $count + 1`
if test $count -eq 30
then
echo "timed out!"
exit 1
fi
done
Это остановится, если счет достигнет 30 (30 секунд сна плюс время, необходимое для проверьте, доступен ли файл или нет), после чего выводится сообщение об ошибке «истекло время ожидания!».
--- Обновление: в случае перехода на systemd
При использовании systemd Раздел модуля поддерживает:
ConditionPathIsMountPoint=/mnt/over-there
, который выполняет то же самое, что и приведенный выше сценарий, без тайм-аута. Этот оператор предотвращает запуск вашей команды до тех пор, пока не будет установлено монтирование.
count=0
while ! test -f /mnt/over-there/this/file/here
do
sleep 1
count=`expr $count + 1`
if test $count -eq 30
then
echo "timed out!"
exit 1
fi
done
Это будет остановлено, если счетчик достигнет 30 (30 секунд ожидания плюс время, необходимое для проверки доступности файла), после чего будет выведено сообщение об ошибке «Превышено время ожидания!».
--- Обновление: в случае перехода на systemd
При использовании systemd раздел Unit поддерживает:
ConditionPathIsMountPoint=/mnt/over-there
, который выполняет то же самое, что и приведенный выше сценарий, без тайм-аута. Этот оператор предотвращает запуск вашей команды до тех пор, пока не будет установлено монтирование.
count=0
while ! test -f /mnt/over-there/this/file/here
do
sleep 1
count=`expr $count + 1`
if test $count -eq 30
then
echo "timed out!"
exit 1
fi
done
Это будет остановлено, если счетчик достигнет 30 (30 секунд ожидания плюс время, необходимое для проверки доступности файла), после чего будет выведено сообщение об ошибке «Превышено время ожидания!».
--- Обновление: в случае перехода на systemd
При использовании systemd раздел Unit поддерживает:
ConditionPathIsMountPoint=/mnt/over-there
, который выполняет то же самое, что и приведенный выше сценарий, без тайм-аута. Этот оператор предотвращает запуск вашей команды до тех пор, пока не будет установлено монтирование.