
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/
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 -r
kö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=YES
in /etc/rc.conf
(oder in den entsprechenden rc.conf.d
Dateien) 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