Ich möchte eine Datei jedes Mal ausführen, wenn sich eine Datei ändert

Ich möchte eine Datei jedes Mal ausführen, wenn sich eine Datei ändert

Ich habe ein Python-Skript, das nach X Durchläufen automatisch endet. Zu Beginn des Programms setzt es den Wert vonneu starten.txtauf 0 mit diesem Code.

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

Am Ende des Programms wird die Datei dann auf 1 zurückgesetzt, sodass ein Neustart inotifywie folgt durchgeführt werden kann.

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

Ich möchte ein inotifySkript oder etwas in der Art, das, wenn der Wert vonneu starten.txtauf 1 wechselt, erfolgt zum erneuten Öffnen des Programms ein Neustart.

inotifyWie würde ich das mit einem Skript oder ähnlichem machen ?

Antwort1

Der folgende Bash-Codeausschnitt kann in ein ausführbares Bash-Skript eingefügt werden:

     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

Der Aufruf von inotifywait überwacht die Datei restart.txt imQuiet-Modus (d. h. Unterdrückung einiger Ausgaben) für ein Ereignis (-e) welches istSchließen Sie die Datei, nachdem Sie sie zum Schreiben geöffnet haben.. Jedoch,inotifywaitkann nicht unterscheiden, ob in die Datei wirklich geschrieben wurde, deshalb implementiert die folgende Zeile einen Test: Wenn restart.txt enthält 1, dann führe eine Datei aus, wenn aber immer noch enthält, 0dann nichts tun.

verwandte Informationen