Eu quero executar um arquivo toda vez que um arquivo é alterado

2

Eu tenho um script python que termina automaticamente após X quantidade de execuções, no início do programa ele define o valor de restart.txt para 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 que ele possa reiniciar usando inotify , assim.

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

Eu quero um script inotify ou algo assim, que quando o valor de restart.txt for alterado para 1, para abrir o programa novamente, uma reinicialização.

Como eu faria isso com um script inotify ou algo semelhante?

    
por Jaffar 14.09.2015 / 11:50

1 resposta

1

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

     FORMAT=$(echo -e "3[1;33m%w%f3[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, no modo q uiet (ou seja, suprimindo alguma saída) para um evento ( -e ) que é < em> feche o arquivo depois de abri-lo para escrever . No entanto, inotifywait não pode distinguir se o arquivo foi realmente gravado, então a seguinte linha implementa um teste: se restart.txt contiver 1 , execute algum arquivo, mas se ainda contiver 0 , fazer nada.

    
por 14.09.2015 / 12:21