Lösung 1:
Ich würde in daemontools (http://cr.yp.to/daemontools.html) nachsehen.
Supervise wurde genau für diesen Zweck entwickelt – um Prozesse zu starten und zu überwachen und sie sofort neu zu starten, wenn sie jemals beendet werden.
Sie könnten immer noch monit verwenden, wenn Sie etwas Komplizierteres als eine einfache "Läuft es noch"-Überprüfung machen müssen, und wenn der Prozess neu gestartet werden muss, dann tun Sie dies durch supervise.
Lösung 2:
Sie können auch /etc/inittab verwenden tote Prozesse mit respawn neu zu starten Aktion.
Siehe inittab-Abschnitt auf http://aplawrence.com/Unixart/startup.html
Lösung 3:
Sie können Event-Handler-Skripte mit Nagios verwenden, wenn Sie diese eingerichtet haben, um Dienste neu zu starten.
Wenn Lack zum Starten eine Root-Berechtigung benötigt (init.d-Skripte tun dies normalerweise), ändern Sie "/etc/init.d/varnish start" in "sudo /etc/init.d/varnish start". Aber das wird wahrscheinlich nicht ganz genug sein, da Sie wahrscheinlich nicht jedem Benutzer, der monit ausführt, alle Befehle als totale sudo nopasswd-Privilegien geben möchten, und es wäre im Grunde genauso schlecht, sudo an ein Shell-Skript zu geben. Sie müssen also herausfinden, welche Befehle in diesem Init-Skript sudo benötigen, diesen Befehlen sudo-Berechtigungen in der Datei /etc/sudoers dem Benutzer monit erteilen und schließlich dieses Init-Skript entsprechend bearbeiten. Oder kann dieser Lack statt dessen vielleicht als Nicht-Root-Benutzer ausgeführt werden?
Schließlich bin ich sicher, dass Sie das wissen, aber ich werde es trotzdem sagen. Sie geben sich eindeutig viel Mühe, ich hoffe, Sie geben sich genauso viel Mühe, herauszufinden, warum der Lack abstürzt, und ihn tatsächlich zu reparieren (oder die Entwickler zu jagen, um herauszufinden, warum) :-)
Aktualisieren:
Dies ist möglicherweise nicht so sauber, aber eine einfache Möglichkeit, dies als Root zu erledigen, besteht darin, ein Skript einzurichten, das überprüft, ob der Prozess in Ordnung ist, und ihn gegebenenfalls startet. Dann führen Sie dieses Skript einfach alle paar Minuten als Cron-Job aus.
Lösung 4:
Eine weitere großartige Methode von StackOverflow:
until myserver; do
echo "Server 'myserver' crashed with exit code $?. Respawning.." >&2
sleep 1
done
Dies könnte der Crontab hinzugefügt werden:
crontab -e
Fügen Sie dann eine Regel hinzu, um Ihr Überwachungsskript zu starten:
@reboot /usr/local/bin/myservermonitor
Oder als Skript in /etc/init.d
hinzugefügt
In der StackOverflow-Antwort finden Sie eine detaillierte Erklärung, warum dies ein guter Ansatz ist.