Se o seu sistema tiver inotifywait
(a maioria das distribuições Linux, OpenBSD e possivelmente outras), como outros mencionaram a abordagem menos intensiva de recursos é usar inotifywait
:
rm -f yourdirectory/start
while [ "$(inotifywait -e create -q --format %f yourdirectory)" != "start" ]; do :; done
yourcommand
Isso garantirá que o arquivo start
seja removido de yourdirectory
, aguarde sua criação e execute yourcommand
. -e create
especifica que estamos interessados apenas em eventos de criação, -q
especifica que não queremos mensagens de diagnóstico de inotifywait
e --format %f
especifica que só queremos ver o nome do arquivo criado na saída .
Se você não tiver inotifywait
, o seguinte também funcionará, com um atraso de no máximo um segundo:
rm -f yourdirectory/start
while [ ! -e yourdirectory/start ]; do sleep 1; done
yourcommand