Ich habe einige Anwendungen, die ständig auf meinem Laptop ausgeführt werden müssen.
Ich benutze ein Bash-Skript, um diese Anwendungen zu starten. In meinem Skript habe ich eine Schleife, die ungefähr so aussieht:
while true;
do
xterm
done
Dadurch wird ( xterm
in diesem Fall) eine Anwendung ausgeführt. Wenn die Anwendung abstürzt, wird sie von der Schleife erneut gestartet.
Dies hat den Nachteil, dass diese Schleife nicht "sauber" verlassen wird. Selbst wenn der Benutzer die Absicht hat, sich zu schließen xterm
, startet die Schleife sie erneut.
Gibt es eine Möglichkeit , eine Anwendung über ein Bash-Skript zu starten , zu überwachen, ob sie ausgeführt wird, sie erneut auszuführen , wenn das Skript abgestürzt ist, oder nichts zu tun, wenn der Benutzer sie ordnungsgemäß geschlossen hat?
while xterm; do true; done
while ! xterm; do :; done
!
.In der
while
Bedingung können Sie testen, ob der Exit-Status vonxterm
erfolgreich war oder nicht:$?
Variable enthält den Beendigungsstatus des zuletzt ausgeführten Befehls.quelle
Ich schlage vor, Sie zu verwenden.
bis xterm; Echo "Programm mit Status $ beendet?" ; getan
Dadurch wird Ihr Programm erneut ausgeführt, wenn es beendet wird.
quelle
Versuchen Sie, Supervisor zu verwenden, es ist sehr einfach und leicht, ein Programm oder ein Skript zum Ausführen hinzuzufügen . In deinem Fall musst du so wenig wie möglich
command
und evtl.exitcodes
im programx-Bereich konfigurieren.Der Standardwert
exitcodes
ist 0,2 und bedeutet:Im Allgemeinen ist es das, was Sie wollen: Führen Sie es erneut aus, wenn das Skript abgestürzt ist, oder tun Sie nichts, wenn der Benutzer es ordnungsgemäß geschlossen hat (oder das Skript erfolgreich abgeschlossen wurde).
Versuchen Sie zuerst die einfachste Konfiguration:
Weitere Informationen zur Flexibilität finden Sie in der Dokumentation zur Konfigurationsdatei .
quelle