init
são iniciados na ordem definida pelos números S ##. Versões mais recentes do Unix (pelo menos no Linux) iniciam os mesmos números ## em paralelo (embora você possa desativar esse recurso ...) Tudo o que você precisa fazer é usar um ## que seja após a rede e fsmount
number. Então deve funcionar. No entanto, se o fsmount
iniciar em segundo plano, o mais fácil provavelmente será investigar os arquivos na unidade montada. Algo parecido com isto:
while ! test -f /mnt/over-there/this/file/here
do
sleep 1
done
Isso irá esperar até o arquivo aparecer. Se ainda não estiver lá, durma um segundo e tente novamente.
Para evitar o possível problema de alguém criar o arquivo que você está testando no computador local, você pode usar a linha de comando mountpoint
como em:
while ! mountpoint -q /mnt/over-there
do
sleep 1
done
(Do comentário abaixo.) O -q
é para tornar o comando silencioso.
--- Atualização: tempo limite após 30 tentativas
No script de shell, você também pode contar e testar números:
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
Isso será interrompido se a contagem atingir 30 (30 segundos de suspensão mais o tempo necessário para verificar se o arquivo está disponível ou não), após o qual será impressa a mensagem de erro "esgotado!".
--- Atualização: no caso de você mudar para o systemd
Com o systemd, a seção Unidade suporta:
ConditionPathIsMountPoint=/mnt/over-there
que faz a mesma coisa que o script acima, sem o tempo limite. Esta declaração evita iniciar seu comando até que a montagem exista.