¿Cómo reiniciar automáticamente un proceso después de una falla o reiniciar en FreeBsd 11?

¿Cómo reiniciar automáticamente un proceso después de una falla o reiniciar en FreeBsd 11?

¿Cuál es la forma idiomática? Preferiría la forma más estándar y sencilla con menos dependencias adicionales. Algo así como una alternativa al systemd de Linux.

Respuesta1

Los procesos instalados se pueden reiniciar automáticamente agregando a/etc/rc.conf

yourprocess_enable="YES"

Inicio del sistema FreeBSD para usuarios de Linux

pero eso supone que hay un script de inicio en/usr/local/etc/rc.d/

El manual de FreeBSD: inicio de servicios

Respuesta2

Si aún no tiene un script rc.d para su proceso, puede lograr fácilmente el resultado deseado con eldemonio(8)dominio. El comando ejecutará un proceso hijo en segundo plano y, con la opción de línea de comando -r, puede hacer que reinicie el proceso hijo si muere:

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

En versiones posteriores de FreeBSD, puede especificar -R <delay in seconds>cuánto tiempo esperar antes de reiniciar el proceso.

Para iniciar el proceso después de reiniciar, especifique el comando en elcrontab(5)archivo como este:

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

Para editar el archivo crontab, use

$ crontab -e

Respuesta3

Como se mencionó, <service>_enable=YESen /etc/rc.conf(o rc.conf.darchivos relevantes) se iniciará un servicio al arrancar.

Para reiniciar en caso de fallas, la forma canónica de hacerlo implicaríaDaemon Tools.

Respuesta4

Puede agregar un script a cron cada (en el ejemplo) dos minutos:

#!/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

información relacionada