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 inotify
wie folgt durchgeführt werden kann.
restart = open("restart.txt", "w")
restart.write("1")
restart.close()
exit //closes program
Ich möchte ein inotify
Skript oder etwas in der Art, das, wenn der Wert vonneu starten.txtauf 1 wechselt, erfolgt zum erneuten Öffnen des Programms ein Neustart.
inotify
Wie 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, 0
dann nichts tun.