3 votos

¿Cómo ejecutar un trabajo cron cada vez que la ejecución anterior ha terminado?

Me gustaría ejecutar un script de Python cada vez que termine y creo que puedo hacerlo con cron pero no estoy seguro de cómo hacerlo.

La idea es que cada vez que el scripts termine, tendrá que ejecutarse una y otra vez.

He buscado respuestas aquí pero no encuentro algo similar a esto.

3voto

dianevm Puntos 130

En la terminal:

while :; do ./script_name; done

o

while :; do python programm.py; done

Si quieres añadir un tiempo de reposo antes de ejecutar el programa de nuevo utiliza el comando 'sleep':

Por ejemplo:

while :; do python programm.py; sleep 90; done

en este ejemplo el ciclo dormirá 90 segundos antes de ejecutarse de nuevo usted programa

1voto

mtnygard Puntos 141

Cron es un programador, es bueno si quieres que tu script se ejecute cada 5 minutos, o cada 3 miércoles, etc, pero para un reinicio arbitrario al finalizar que podría (supongo, no indicas lo que el script de Python está haciendo, cuánto tiempo tarda o si el tiempo de finalización es variable, etc) ser esencialmente aleatorio no es la mejor opción.

Puedes insertar alguna lógica en el script directamente, o simplemente puedes envolver el script con alguna lógica de Shell Scripting según la respuesta de @user3439968, mi versión es esencialmente la misma, pero la he mostrado un poco más verbosa con opciones para mantener un ojo en los reinicios, etc. Usted puede escribir esto en casi cualquier línea de comandos de shell, más simple que acaba de abrir Terminal y escribirlo directamente en él

while true
do
    /path/to/script.py
    sleep 60
    date >> /path/to/logfile.txt
    echo "The script ended, and I restarted it after 60 seconds" >> /path/to/logfile.txt
done

En el ejemplo anterior, el reinicio no es inmediato, sino que espera 60 segundos y añade la fecha actual y un mensaje a un archivo de registro en cada reinicio. Puedes poner cualquier código de control después de la ejecución inicial del script de Python y el done línea, incluso conseguir que te envíe un correo que se reinicie, etc.

Como no se especifica qué es "verdadero", nunca puede ser falso, por lo que esencialmente todo entre do y done se repite una y otra vez hasta que recibe una señal de interrupción adecuada, como un CTRL-c o un kill -9 PID tipo de comando desde otra sesión de línea de comandos.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X