Como reiniciar automaticamente um processo após uma falha ou reinicialização no FreeBsd 11?

Como reiniciar automaticamente um processo após uma falha ou reinicialização no FreeBsd 11?

Qual é a maneira idiomática? Eu preferiria a maneira mais padrão e simples, com menos dependências adicionais. Algo como uma alternativa ao systemd do Linux.

Responder1

Os processos instalados podem ser reiniciados automaticamente adicionando ao/etc/rc.conf

yourprocess_enable="YES"

Inicialização do sistema FreeBSD para usuários Linux

mas isso pressupõe que haja um script de inicialização em/usr/local/etc/rc.d/

O Manual do FreeBSD - Iniciando Serviços

Responder2

Se você ainda não possui um script rc.d para o seu processo, poderá facilmente obter o resultado desejado com odaemon(8)comando. O comando executará um processo filho em segundo plano e, com a opção de linha de comando -r, você poderá fazer com que ele reinicie o processo filho se ele morrer:

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

Em versões posteriores do FreeBSD, você pode especificar -R <delay in seconds>quanto tempo esperar antes de reiniciar o processo.

Para iniciar o processo após a reinicialização, especifique o comando nocrontab(5)arquivo como este:

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

Para editar o arquivo crontab, use

$ crontab -e

Responder3

Conforme mencionado, <service>_enable=YESem /etc/rc.conf(ou arquivos relevantes rc.conf.d) iniciará um serviço na inicialização.

Para reiniciar em caso de falhas, a maneira canônica de fazer isso envolveriaDaemon Tools.

Responder4

Você pode adicionar script ao cron a cada (por exemplo) dois 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

informação relacionada