
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/
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=YES
em /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