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.