Reinicie un script de Python aproximadamente cada hora

Reinicie un script de Python aproximadamente cada hora

Entonces tengo un script en Python que ejecuto en la terminal simplemente escribiendo el nombre del script (python SCRIPTNAME.py).

Me pregunto si es posible crear un script o un trabajo cron que simplemente se detenga y luego inicie ese script de Python cada hora.

Respuesta1

El mejor enfoque sería a través de GNU timeout como en

timeout -k 3600 python3 /path/to/script.py

donde -k significa "matar después" y tiempo en segundos.

Entonces, para que el script se ejecute, finalice y reinicie cada hora, puede hacer

while timeout -k 3600 python3 /path/to/script; do
   sleep 2
done

donde sleep 2es simplemente para agregar un pequeño retraso antes de reiniciar


Alternativamente, considere usar el módulo Threading en Python para programar las partes relevantes del script. Ver https://stackoverflow.com/a/50537798/3701431

Respuesta2

Parece que quieresdemonizaro cree un servicio para su script Python. Así es como se inician otras aplicaciones, y en el orden correcto o en el momento adecuado.

Querrá crear un systemdservicio para su secuencia de comandos Python y luego interactuar con él a través de systemctl.

systemctl restart mypython
systemctl enable mypython

Una vez que su script funcione de esta manera, puede configurarlo cronpara hacer lo que necesite, que probablemente será reiniciar el servicio.

Dependiendo del objetivo de su secuencia de comandos y de su capacidad para determinar si se está ejecutando correctamente, podría mejorar su servicio para informar si deja de ejecutarse, o incluso buscar soluciones comomonit.


Como se ha señalado,esta respuestaproporciona información útil, pero contiene herramientas desactualizadas, como rc.local. En lugar de usar systemd, puede rastrear el PID del proceso y luego finalizar ese proceso y volver a ejecutar el script cada hora.

información relacionada