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 inotify
script o algo así, que cuando el valor dereiniciar.txtcambia a 1, para abrir el programa nuevamente, reinicie.
¿Cómo haría eso con un inotify
guió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.