Respuestas:
Si se inicia desde init, puede reiniciarlo mediante init. Establezca la acción para que el proceso 'reaparezca' para los niveles de ejecución en los que desea el proceso.
He respondido una pregunta similar antes .
En tu caso:
#!/bin/bash
while ! <<command>>
do
sleep 1
echo "Restarting program..."
done
Reemplace <<command>>con el comando que desea ejecutar. El proceso tiene que terminar con el código de salida cero para romper el ciclo. De lo contrario, el script lo reinicia.
¿Solo quieres reiniciarlo si muere? El problema con esto es que no maneja situaciones donde se congela. Por lo tanto, solo verificar el proceso no siempre ayudará. Entonces, si esto es algo así como un servidor web, desea tener un script que lo verifique desde la perspectiva del usuario.
Si configura Nagios Monitoring, puede usar controladores de eventos . Estos son solo scripts que escribes que se ejecutarán cuando el servicio se caiga, por lo que podrías tener uno que reinicie algo como Apache si el sitio web está caído.
Dependiendo de la distribución, pero hemos utilizado con éxito "monit" para esta tarea. Es muy facil. Puede escribir sus propios cheques, monitorear el PID del proceso, etc.
Archivo monitrc de ejemplo:
check process sshd with pidfile /var/run/sshd.pid
start program "/etc/init.d/ssh start"
stop program "/etc/init.d/ssh stop"
if failed port 22 protocol ssh then restart
if 5 restarts within 5 cycles then timeout
Respuesta corta : No, tienes que hacerlo tú mismo.
Respuesta larga : Necesitará un proceso padre para iniciarlo, y luego seguir verificando que esté activo y reiniciarlo si es necesario.
Podrías usar algo como daemontoolsadministrarlo.