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 inotify
script ou algo parecido, que quando o valor dereiniciar.txtmuda para 1, para abrir o programa novamente, reinicie.
Como eu faria isso com um inotify
script 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.