Quiero ejecutar un archivo cada vez que cambia un archivo

Quiero ejecutar un archivo cada vez que cambia un archivo

Tengo un script en Python que finaliza automáticamente después de X cantidad de ejecuciones, al inicio del programa establece el valor dereiniciar.txta 0 usando este código.

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

Luego, al final del programa, restablece el archivo a 1 para que pueda reiniciar usando inotify, así.

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

Quiero un inotifyscript o algo así, que cuando el valor dereiniciar.txtcambia a 1, para abrir el programa nuevamente, reinicie.

¿Cómo haría eso con un inotifyguión o algo similar?

Respuesta1

El siguiente fragmento de código bash se puede colocar dentro de un script bash ejecutable:

     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

La llamada a inotifywait vigila el archivo restart.txt, en elqModo silencioso (es decir, suprimir alguna salida) para un evento (-mi) cual escerrar el archivo después de haberlo abierto para escribir. Sin embargo,inotificaresperarno puede distinguir si el archivo fue realmente escrito, por lo que la siguiente línea implementa una prueba: si restart.txt contiene 1, ejecute algún archivo, pero si aún lo contiene 0, no haga nada.

información relacionada