EN ocasiones, los procesos en segundo plano fallan y provocan un cierre de la ejecución. Para no tener que detectar el problema manualmente, chequeando que está corriendo, haciendo algo como:
$ ps auxw | grep nombreProceso
podemos hacer un pequeño script en shell para que compruebe que se está ejecutando, y si no… que lo lance por nosotros.
En el caso que ejemplifico de forma general, se trata de comprobar si 2 o más procesos PHP están corriendo (nombreProceso1, nombreProceso2), que corren en background, con la opción &. Si alguno de estos procesos no se está ejecutando, lo lanzamos.
#!/bin/bash## # 1. Verifica si estan corriendo los procesos # 2. Si falla alguno, los vuelve a lanzar PROCESO1=`ps aux | grep -c nombreProceso1` if [[ $PROCESO1 -eq 1 ]] then php -f /ruta/nombreProceso1.php & fi PROCESO2=`ps aux | grep -c nombreProceso2` if [[ $PROCESO2 -eq 1 ]] then php -f /ruta/nombreProceso2.php & fi exit $1
Y para que sea algo desasistido del todo, lo metemos en el cron del sistema, y le decimos que se ejecute cada cierto tiempo, por ejemplo, cada media hora. Dependiedo de la versión de sistema, editamos el fichero crontab (de /etc/crontab) o lo añadimos directamente al cron del usuario que querramos que lo ejecute:
*/30 * * * * /ruta-script/controlProcesos.sh
Saludos