2012-10-08 22 views
160

*/20 * * * *Run Cron lavoro ogni N minuti più offset

assicura che passa ogni 20 minuti, mi piacerebbe eseguire un'attività ogni 20 minuti, a partire dalle 5 oltre l'ora, è questo possibile con Cron? Sarebbe:

5/20 * * * *?

+7

Grazie Babilonesi, che ha deciso che il nostro sistema tempo dovrebbe essere esattamente diviso per 1,2,3,4,5 e 6. – arivero

+0

se è divisibile per 2 e 3 è anche frazionabile da 6 – Ziofil

risposta

332

Per eseguire un'attività ogni 20 minuti a partire dalle 5 oltre l'ora, provate questo:

5-59/20 * * * * 

Spiegazione

Un * nel campo dei minuti è lo stesso di 0-59/1 dove 0-59 è il intervallo e 1 è il passaggio. Il comando verrà eseguito al primo minuto nell'intervallo (0), quindi in tutti i minuti successivi distanti dal primo di passaggio (1), fino all'ultimo (59).

Questo è il motivo per cui */20 * * * * verrà eseguito a 0 minuti, 20 minuti dopo e 40 minuti dopo - che è lo stesso di ogni 20 minuti. Tuttavia, verrà eseguito a 0 minuti, 25 minuti dopo e 50 minuti dopo - che non è uguale a ogni 25 minuti. Ecco perché è solitamente preferibile utilizzare un valore di passo nel campo dei minuti che divide equamente in 60.

Quindi, per compensare l'ora di inizio, specificare l'intervallo in modo esplicito e impostare il primo valore sulla quantità dell'offset.

Esempi

5-59/20 * * * * verrà eseguito a 5 minuti dopo, 25 minuti dopo, e 45 minuti dopo.

10-59/25 * * * * verrà eseguito 10 minuti dopo e 35 minuti dopo.

1-59/2 * * * * verrà eseguito ogni minuto dispari.

+0

che funziona perfettamente. Come l'hai scoperto? Puoi indicarmi i documenti? Grazie. – AJP

+6

Una serie di ricerche su Google mi ha portato a [questa risposta di errore del server] (http://serverfault.com/a/429397/181709). Ha avuto un errore che mi ha davvero confuso, soprattutto perché altri risultati hanno suggerito che il passo del modulo * minuti dovrebbe essere uguale a zero *. Ho finalmente trovato [questa pagina di manuale] (http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/index.jsp?topic=%2Fcom.ibm.db2.luw.sql.rtn.doc%2Fdoc% 2Fc0054381.html) che mi ha dato la risposta.Di conseguenza, sono stato in grado di commentare la risposta del Server Fault che è stata ora corretta. Non ricordo i termini di ricerca effettivamente usati per trovare la pagina IBM. – toxalot

+0

Grazie e ottimo lavoro @toxalot, vorrei poterti assegnare il badge "Tireless Investigator"! : P – AJP

28

Sicuro!

5,25,45 * * * * /your/cron 
+2

Grazie. Avevo finito per farlo, speravo che potesse esserci una soluzione più elegante. – AJP

+7

A volte la soluzione semplice è migliore perché è facile facile da leggere e capire. Mi piace sapere che '5-59/20' è possibile, ma '5,25,45' ha il vantaggio che è immediatamente molto chiaro cosa faccia. – thomasrutter

+1

solo se il tuo passo è abbastanza grande – Tebe

-7

Si può provare: */5 * * * * sleep N; your job

Problemi correlati