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

3

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

La idea es que cada vez que finalicen los scripts de Python, tendrá que ejecutarse una y otra vez.

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

    
pregunta Alex 05.04.2014 - 21:13

2 respuestas

3

En la terminal:

while :; do ./script_name; done

o

while :; do python programm.py; done

Si desea agregar un poco de tiempo de suspensión antes de ejecutar nuevamente el programa, use el comando 'dormir':

Por ejemplo:

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

en este ejemplo, el ciclo durará 90 segundos antes de volver a ejecutarlo, programa

    
respondido por el user3439968 05.04.2014 - 22:26
1

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

Puedes insertar algo de lógica en el script directamente o simplemente 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 detallada con opciones para vigilar los reinicios, etc. Puede escribir esto en casi cualquier shell de línea de comandos, el más simple es simplemente 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, luego agrega la fecha actual y un mensaje a un archivo de registro en cada reinicio. Puede poner cualquier código de control después de la ejecución inicial de la secuencia de comandos de Python y la línea done , incluso hacer que se le envíe por correo postal que se reinicia, etc.

Debido a que no 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 CTRL-c o un comando kill -9 PID type desde otra sesión de línea de comandos.

    
respondido por el stuffe 05.04.2014 - 22:44

Lea otras preguntas en las etiquetas