2 votes

Je veux exécuter un fichier chaque fois qu'un fichier change

J'ai un script python qui se termine automatiquement après X exécutions, au début du programme il met la valeur de restart.txt à 0 en utilisant ce code.

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

Ensuite, à la fin du programme, il réinitialise le fichier à 1 pour pouvoir redémarrer en utilisant inotify, comme ceci.

restart = open("restart.txt", "w")
restart.write("1")
restart.close()
exit //ferme le programme

Je veux un script inotify ou quelque chose dans ce genre, qui lorsque la valeur de restart.txt change à 1, ouvre à nouveau le programme, un redémarrage.

Comment pourrais-je faire cela avec un script inotify ou quelque chose de similaire ?

1voto

MariusMatutiae Points 45233

Le fragment de code bash suivant peut être placé à l'intérieur d'un script bash exécutable :

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

L'appel à inotifywait surveille le fichier restart.txt, en mode silencieux (c'est-à-dire, en supprimant certaines sorties) pour un événement (-e) qui est fermer le fichier après l'avoir ouvert pour écrire. Cependant, inotifywait ne peut pas distinguer si le fichier a réellement été écrit, donc la ligne suivante implémente un test: si restart.txt contient 1, alors exécute un fichier, mais s'il contient toujours 0 alors ne rien faire.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X