Como posso observar a criação de um determinado “arquivo de gatilho”?

1

Eu preciso criar um script de shell que execute um aplicativo quando um arquivo chamado start for criado em um diretório específico.

Como posso escrever um script de shell que aguarda a criação de um arquivo com um certo nome em um determinado local?

    
por kumar shivam 13.09.2017 / 14:42

2 respostas

2

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
    
por 13.09.2017 / 21:19
0

Eu gosto da ferramenta 'inoticoming' para assistir a um diretório para alteração. tem criação de log e arquivo pid. você pode executar o comando na mudança com 'opções de ação' adicionais, é bastante decente :)

Eu também lembro de uma ferramenta chamada 'fileschanged', mas nunca consegui tocar com ela, poderia valer a pena dar uma olhada. -Jay

    
por 26.10.2017 / 14:35