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 2
es 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 systemd
servicio 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 cron
para 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.