Wie starte ich einen Prozess nach einem Absturz oder Neustart in FreeBsd 11 automatisch neu?

Wie starte ich einen Prozess nach einem Absturz oder Neustart in FreeBsd 11 automatisch neu?

Was ist der idiomatische Weg? Ich würde den standardmäßigsten und dennoch einfachsten Weg mit weniger zusätzlichen Abhängigkeiten bevorzugen. So etwas wie eine Alternative zu systemd von Linux.

Antwort1

Installierte Prozesse können automatisch neu gestartet werden, indem Sie/etc/rc.conf

yourprocess_enable="YES"

FreeBSD-Systemstart für Linux-Benutzer

aber das setzt voraus, dass es ein Startskript gibt in/usr/local/etc/rc.d/

Das FreeBSD-Handbuch - Dienste starten

Antwort2

Wenn Sie noch kein rc.d-Skript für Ihren Prozess haben, können Sie das gewünschte Ergebnis relativ einfach mit demdaemon(8)Befehl. Der Befehl führt einen untergeordneten Prozess im Hintergrund aus und mit der Befehlszeilenoption -rkönnen Sie ihn dazu veranlassen, den untergeordneten Prozess neu zu starten, wenn er beendet wird:

$ daemon -r /some/path/to/command

In späteren Versionen von FreeBSD können Sie angeben, -R <delay in seconds>wie lange gewartet werden soll, bevor der Vorgang neu gestartet wird.

Um den Vorgang nach dem Neustart zu starten, geben Sie den Befehl imcrontab(5)Datei wie folgt:

@reboot daemon -r /some/path/to/command

Um die Crontab-Datei zu bearbeiten, verwenden Sie

$ crontab -e

Antwort3

Wie erwähnt wird <service>_enable=YESin /etc/rc.conf(oder in den entsprechenden rc.conf.dDateien) beim Booten ein Dienst gestartet.

Für den Neustart nach einem Absturz wäre die übliche Vorgehensweisedaemontools.

Antwort4

Sie können dem Cron alle (zum Beispiel) zwei Minuten ein Skript hinzufügen:

#!/bin/sh

process = 'my-secret-service' # process name

if ps ax | grep -v grep | grep $process
then
    echo "$process is alive."
else
    echo "$process is dead, but will be launched."
/usr/local/bin/my-secret-service #launch command

fi

verwandte Informationen