Dejo aquí un pequeño truco para asegurarnos de que un programa continúa ejecutándose en un sistema GNU/Linux. En el caso de que dicho programa no se esté ejecutando entonces lo lanza de nuevo.
Para configurar esto se puede hacer creando un servicio del sistema. Pero en este post he hecho un Shell Script para simplificar el trabajo. Es decir, en este post se configura una tarea programada de usuario, que comprueba y lanza un Shell Script si no está en ejecución.
Configurando el programador de tareas
Lo primero es en línea de comandos ejecutar lo siguiente:
crontab -e
También puedes lanzar el programador de tareas de cierto usuario haciendo esto:
sudo crontab -e -u usuario
Esto lanzará el editor de textos para configurar las tareas programadas. Si es la primera vez que lo lanzamos nos preguntará por el editor que queremos usar. Yo suelo usar nano porque ya me conozco las combinaciones de teclas, eliges y debes de ver una pantalla como la siguiente:
Lo siguiente es configurar la siguiente tarea:
* * * * * pgrep runSomething > /dev/null || /home/jaime/project-dir/runSomething.sh
Aquí está el kit de la cuestión, y funciona muy bien para un programa en Shell Script. La primera parte antes del || consulta si ya está en ejecución el programa llamado runSomething. Y si no lo está entonces lo lanza con la segunda parte de la línea después del ||.
Lo grabamos en el editor, guardamos, y ya sabremos que siempre está en ejecución el Shell Script.