He usado un script simple con cron para asegurarme de que el programa se está ejecutando. Si no es así, lo pondrá en marcha. Puede que esta no sea la solución perfecta que está buscando, pero es simple y funciona bastante bien.
#!/bin/bash
#make-run.sh
#make sure a process is always running.
export DISPLAY=:0 #needed if you are running a simple gui app.
process=YourProcessName
makerun="/usr/bin/program"
if ps ax | grep -v grep | grep $process > /dev/null
then
exit
else
$makerun &
fi
exit
Luego agregue un trabajo cron cada minuto o cada 5 minutos.
Monit es perfecto para esto :)
Puede escribir archivos de configuración simples que le indiquen a monit que mire, p. un puerto TCP, un archivo PID, etc.
monit ejecutará un comando que usted especifique cuando el proceso que está monitoreando no esté disponible/usando demasiada memoria/está fijando la CPU por mucho tiempo/etc. También aparecerá una alerta por correo electrónico que le informará qué sucedió y si podría hacer algo al respecto.
Lo usamos para mantener en funcionamiento una gran parte de nuestros sitios web y, al mismo tiempo, recibir una advertencia temprana cuando algo no va bien.
-- Su fiel empleado, Monit