Come eseguire un cron job ogni volta che è terminata l'esecuzione precedente?

3

Mi piacerebbe eseguire uno script Python ogni volta che termina e penso di poterlo fare con cron ma non sono sicuro di come farlo.

L'idea è che ogni volta che gli script Python terminano, dovrà essere eseguito ancora e ancora.

Ho cercato risposte qui ma non riesco a trovare qualcosa di simile a questo.

    
posta Alex 05.04.2014 - 21:13
fonte

2 risposte

3

Nel terminale:

while :; do ./script_name; done

o

while :; do python programm.py; done

Se vuoi aggiungere un po 'di tempo per dormire prima di eseguire nuovamente il programma usa il comando' sleep ':

Ad esempio:

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

in questo esempio, il ciclo salirà 90 secondi prima di eseguire nuovamente il programma

    
risposta data 05.04.2014 - 22:26
fonte
1

Cron è un programmatore, è buono se vuoi che lo script venga eseguito ogni 5 minuti, o ogni 3 ° mercoledì, ecc., ma per un riavvio arbitrario al completamento che potrebbe (presumo, non indichi quale sia lo script Python fare, quanto tempo ci vuole o se il tempo di completamento è variabile etc) essere essenzialmente casuale non è la scelta migliore.

Puoi inserire direttamente qualche logica nello script, oppure puoi semplicemente racchiudere lo script con una logica di Shell Scripting come per la risposta di @ user3439968, la mia versione è essenzialmente la stessa, ma l'ho mostrata un po 'più prolissa con opzioni per tenere d'occhio i riavvii, ecc. Puoi digitare questo in praticamente tutte le shell della riga di comando, in modo semplice per aprire Terminal e digitarle direttamente dentro

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

Nell'esempio sopra il riavvio non è immediato ma attende 60 secondi, quindi aggiunge la data corrente e un messaggio a un file di registro ad ogni riavvio. Puoi inserire qualsiasi codice di controllo dopo l'esecuzione iniziale dello script Python e la riga done , anche se ti viene inviato per inviarti che è stato riavviato ecc.

Poiché non si specifica cosa sia "true", non può mai essere falso, quindi essenzialmente tutto tra do e done viene ripetuto e ripetuto finché non riceve un segnale di interruzione adatto come CTRL-c o un comando di tipo kill -9 PID da un'altra sessione della riga di comando.

    
risposta data 05.04.2014 - 22:44
fonte

Leggi altre domande sui tag