monit
é ótimo neste caso - ele é executado em localhost, portanto, você não precisa de uma conexão de rede para reiniciar seu daemon (no caso de falha, ou o daemon é responsável pela rede). Ele também ocupa pouco espaço no sistema, e você pode usá-lo para monitorar seus outros daemons / espaço em disco / etc. também.
Crie um script start / stop (parecido com aqueles em /etc/init.d/
e crie links simbólicos para ele em runlevels que seu sistema usa para operação normal, assegurando que seu daemon inicie na reinicialização e pare no shutdown apropriadamente. não tem pidfile, crie um usando o script start-stop-daemon
.
Depois disso, instale monit
e crie a configuração para seu daemon, algo assim:
check process daemond with pidfile /var/run/daemond.pid start program "/etc/init.d/daemond start" stop program "/etc/init.d/daemond stop" if failed port 1234 type TCP for 5 times within 10 cycles then restart if 3 restarts within 5 cycles then alert
Esta configuração irá garantir que, se o daemon parar de responder na porta tcp 1234, ou irá parar de ser executado, ele será reiniciado usando o script init. monit
também enviará um alerta por e-mail ou fará outras ações, dependendo de como você o configurar. Basta verificar monit(1)
manpage.