Problema: Mantener los procesos en ejecución
Los procesos pueden fallar o detenerse sin previo aviso, lo que puede interrumpir los servicios y causar tiempo de inactividad. Reiniciar estos procesos manualmente lleva tiempo y no es eficiente, especialmente para sistemas importantes que deben funcionar constantemente.
Solución: Script Bash para monitoreo y reinicio de procesos
Creación de un script Bash
Un script Bash puede monitorear y reiniciar un script Python si deja de ejecutarse. Las partes principales de este script Bash incluyen:
- Un bucle que se ejecuta continuamente
- Un comando para verificar si el script Python está en ejecución
- Lógica para iniciar el script Python si no está en ejecución
El script verifica si el proceso Python está en ejecución utilizando el comando pgrep. Si no se encuentra el proceso, el script lo inicia nuevamente. Este método es simple para mantener un script en ejecución.
Consejo: Registro para solución de problemas
Agrega registro a tu script Bash para rastrear cuándo se reinicia el script Python. Esto puede ayudar con la solución de problemas y el monitoreo de la frecuencia de los reinicios. Puedes hacerlo agregando una línea para escribir en un archivo de registro:
echo "$(date): Reiniciando $SCRIPT_NAME" >> /ruta/al/reinicio.log
Coloca esta línea justo antes de que se reinicie el script Python en tu script Bash.
Implementación del script Bash
Así es cómo escribir el script Bash:
-
Abre un editor de texto y crea un nuevo archivo llamado
monitor_script.sh. -
Agrega este contenido al archivo:
#!/bin/bash
SCRIPT_NAME="checkqueue.py"
SCRIPT_PATH="/ruta/a/checkqueue.py"
while true; do
if ! pgrep -f "$SCRIPT_NAME" > /dev/null; then
echo "Iniciando $SCRIPT_NAME"
python3 "$SCRIPT_PATH" &
fi
sleep 60
done
- Guarda el archivo y hazlo ejecutable con el comando:
chmod +x monitor_script.sh
Expliquemos cada parte del script:
#!/bin/bashle dice al sistema que use bash para ejecutar este script.- Las variables
SCRIPT_NAMEySCRIPT_PATHalmacenan el nombre y la ruta completa del script Python. - El bucle
while truehace que el script se ejecute continuamente. pgrep -f "$SCRIPT_NAME"verifica si hay un proceso en ejecución que coincida con el nombre del script.- Si no se encuentra el proceso, el script lo inicia usando
python3 "$SCRIPT_PATH" &. - El comando
sleep 60hace que el script espere 60 segundos antes de verificar nuevamente.
Para usar este script, reemplaza /ruta/a/checkqueue.py con la ruta real de tu script Python. Luego puedes ejecutar el script Bash en segundo plano o agregarlo a los procesos de inicio de tu sistema para mantener tu script Python en ejecución en todo momento.





