Quero executar um arquivo toda vez que um arquivo for alterado

Quero executar um arquivo toda vez que um arquivo for alterado

Eu tenho um script python que termina automaticamente após X quantidade de execuções, no início do programa ele define o valor dereiniciar.txtpara 0 usando este código.

restart = open("restart.txt", "w")
restart.write("0")
restart.close()

Então, no final do programa, ele redefine o arquivo para 1 para poder reiniciar usando inotify, assim.

restart = open("restart.txt", "w")
restart.write("1")
restart.close()
exit //closes program

Eu quero um inotifyscript ou algo parecido, que quando o valor dereiniciar.txtmuda para 1, para abrir o programa novamente, reinicie.

Como eu faria isso com um inotifyscript ou algo semelhante?

Responder1

O seguinte trecho de código bash pode ser colocado dentro de um script bash executável:

     FORMAT=$(echo -e "\033[1;33m%w%f\033[0m written")
     while /usr/bin/inotifywait -qe close_write --format "$FORMAT" restart.txt
     do
             [ $(cat restart.txt) -eq 1] && /path/to/program/to/be/executed || echo "nothing to do"
     done

A chamada para inotifywait observa o arquivo restart.txt, noqmodo uiet (ou seja, suprimindo alguma saída) para um evento (-e) qual éfeche o arquivo depois de abri-lo para escrever. No entanto,inotifywaitnão consegue distinguir se o arquivo foi realmente gravado, então a linha a seguir implementa um teste: se restart.txt contiver 1, execute algum arquivo, mas se ainda contiver 0, não faça nada.

informação relacionada