Como monitorar se um arquivo foi criado?

2

Eu preciso monitorar se, por exemplo, o arquivo / tmp / somefile123 foi criado após alguns eventos. Eu tentei usar inotifywait mas aqui está um problema:

# inotifywait -q -e create /tmp/somefile?*
Couldn't watch /tmp/somefile?*: No such file or directory

porque não existe exatamente esse arquivo, quero saber se ele estará lá!

Como posso resolver este problema?

UPD : Talvez, se eu explicar o que quero alcançar, seja mais claro.

Eu preciso escrever shell script (sh) com consumo mínimo de CPU, algo assim:

if [ $(inotifywait -e create $SPECIFIC_FILE) ]; then
    blah-blah-blah some actions
fi
# And then similarly monitor if this file was deleted and then do another actions

Espero que o script pare a execução em inotifywait -e crie $ SPECIFIC_FILE até que este $ SPECIFIC_FILE não seja criado e seja melhor do que

while [ ! -f $SPECIFIC_FILE ]; do
    blah-blah-blah some actions
    sleep 1
done
    
por HeroFromEarth 17.04.2017 / 14:43

1 resposta

6

Por ter inotifywait , verifique no diretório pai :

/tmp$ inotifywait -e create -d -o /home/me/zz /tmp
/tmp$ touch z1
/tmp$ cat ~/zz
/tmp/ CREATE z1

Você também pode especificar o formato de hora para o evento com a opção -timefmt . Além disso, se você quiser agir imediatamente, executando algum arquivo de script, por exemplo, você pode usar tail -f no arquivo de script para monitorar continuamente o arquivo de log, aqui / home / me / zz , ou você pode criar um arquivo pipe nomeado e ter inotifywait escrito nele, enquanto seu script lê a partir dele.

    
por 17.04.2017 / 15:55