Wie wäre es mit cron? Richten Sie einen kleinen Cron-Job ein, der jede Minute ausgeführt wird. Überprüfen Sie, ob Ihre Anwendung läuft (mit ps) und starten Sie sie neu, falls nicht.
Erstellen Sie ein kleines Skript wie dieses:
#!/bin/bash
if [ ! "$(pidof myapp)" ]
then
/path/to/myapp &
fi
Sie testen, ob "myapp" in der Prozessliste enthalten ist. "!" kehrt den Test um. Wenn es nicht da ist, wird "myapp" ausgeführt. "&" ist nur so, dass es im Hintergrund startet.
Fügen Sie dies zu cron hinzu. Abhängig von Ihrem System und Ihren Einstellungen gibt es mehrere Möglichkeiten, dies zu tun. Der Klassiker ist die Verwendung von crontab. Es gibt eine Menge Dokumentation darüber, wie Sie Ihre crontab-Zeile spezifizieren, aber Sie wollen wahrscheinlich so etwas:
* * * * * /path/to/the/script.sh > /dev/null
Dadurch wird Ihr Test jede Minute zu jeder Stunde von jedem ... Sie verstehen schon.
Verwenden Sie /etc/inittab
Sie können es verwenden, um in den spezifischen Runlevels zu starten, und wenn es beendet wird, soll es automatisch neu gestartet werden
n:2345:respawn:/path/to/app
Dadurch wird es in Runlevel 2345 respawnen, Sie brauchen wahrscheinlich nur 3 und 5, aber das wird gut funktionieren und ist in Linux integriert.
Die meisten Unix/Linux init
Programme verwalten Daemons für Sie und starten sie neu. Erwägen Sie, Ihren Dienst in /etc/inittab
zu platzieren . Oder Sie verwenden vielleicht Upstart
oder systemd
.
Alle diese Programme laufen als PID 1
und es ist ihre Aufgabe, Systemprozesse zu überwachen und neu zu starten.
Von Ihrem Busybox-Tag würde ich annehmen, dass Sie ein eingebettetes System ausführen. Auf diesen sind die Init-Skripte im System-V-Stil mit all ihren Shell-Skripten wirklich übertrieben. Sie sollten das wahrscheinlich alles herausreißen und durch Einträge in /etc/inittab
ersetzen oder Upstart- oder Systemd-Jobs.
Der Linux-Software-Watchdog wird die Maschine neu starten, nicht nur Ihren Prozess neu starten.
Nun, das ist einfach nicht wahr, es ist sehr gut möglich, einzelne oder mehrere Prozesse neu zu starten, nachdem der Watchdog signalisiert, dass das System hängt - Sie können den Neustart sogar ABBRECHEN oder einen SOFT-Neustart durchführen, man kann "test" und " repair"-Skripte / Binärdateien, die tun, was Sie wollen. Die Busybox-Version von Watchdog ist auf ein nahezu unbrauchbares Niveau reduziert ... ich denke, die Welt wird nie erfahren, warum die Busybox-Entwickler beschlossen haben, primäre Funktionalitäten aufzugeben - im Moment wäre es am besten, Busybox überhaupt zu vermeiden --> Die Geschwindigkeitsverbesserungen sind fast nicht vorhanden, die Größenreduzierung gleicht den enormen Funktionsverlust nicht aus. /bin/bash ist eher klein - kompilieren Sie alles mit dem Flag "-Os" neu, wenn die Größe wichtig ist und Sie können loslegen - ein Out-of-the-Box-Watchdog, der so ziemlich alles zulässt, was man sich nur wünschen kann.
Oh und BITTE erstellen Sie KEINEN eigenen Watchdog - das wird Sie höchstwahrscheinlich mit unbehandelten Fehlern zurücklassen und Ihnen eines Tages das Leben schwer machen.