Eseguire il processo Cron ogni N minuti più offset


251

*/20 * * * *

Assicura che venga eseguito ogni 20 minuti, vorrei eseguire un'attività ogni 20 minuti, a partire dalle 5 passate, è possibile con Cron? Sarebbe:

5/20 * * * * ?


10
Grazie ai babilonesi, che hanno deciso che il nostro sistema temporale dovrebbe essere esattamente diviso per 1,2,3,4,5 e 6.
arivero

3
se è divisibile per 2 e 3 è anche divisibile per 6
Ziofil

Risposte:


514

Per eseguire un'attività ogni 20 minuti a partire dalle 5 passate, prova questo:

 5-59/20 * * * *

Spiegazione

Un *campo al minuto è lo stesso di 0-59/1dove si 0-59trova l' intervallo ed 1è il passo . Il comando verrà eseguito al primo minuto nell'intervallo (0), quindi in tutti i minuti successivi che sono distanti dal primo passo (1), fino all'ultimo (59).

Ecco perché */20 * * * *verrà eseguito 0 minuti, 20 minuti dopo e 40 minuti dopo, che è lo stesso di ogni 20 minuti. Tuttavia, */25 * * * *funzionerà a 0 minuti, 25 minuti dopo e 50 minuti dopo - che non è lo stesso di ogni 25 minuti. Ecco perché di solito è preferibile utilizzare un valore di passo nel campo dei minuti che si divide uniformemente in 60.

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

Esempi

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

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

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


3
funziona perfettamente. Come l'hai scoperto? Puoi indicarmi i documenti? Grazie.
AJP,

12
Varie ricerche di Google mi hanno portato a questa risposta di errore del server . 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 . Alla fine ho trovato questa pagina di manuale che mi ha dato la risposta. Di conseguenza, sono stato in grado di commentare la risposta di errore del server che è stata risolta. Non ricordo i termini di ricerca che ho usato per trovare la pagina IBM.
Toxalot,

3
Grazie e ottimo lavoro @toxalot, vorrei poterti assegnare il badge "Instancabile Investigatore"! : P
AJP,

5
LOL. Avevo bisogno di eseguire un lavoro ogni 10 minuti (offset di 5) e non volevo davvero usare un elenco delimitato da virgole, quindi ero determinato a trovare la risposta.
Toxalot,

2
Purtroppo a CPanel non sembra piacere :(
Robert è andato il

53

Sicuro!

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

2
Grazie. Avevo finito per farlo, speravo che ci potesse essere una soluzione più elegante.
AJP,

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

2
solo se il tuo passo è abbastanza grande
Tebe

3
Questo è un esempio molto migliore. Ci vuole 0 carico cognitivo per capire quando inizia il lavoro.
Dylan Pierce,

11

Puoi provare: */5 * * * * sleep N; your job


4
Non vedo nulla di sbagliato in questo - in effetti è molto simile a come il cron job di certbot raggiunga un offset casuale che aiuta a mantenere bilanciato il carico del server. di certo non merita tutti quei
voti negativi

6
Questo mi ha fatto domandare come dormire un numero casuale di secondi. sleep `shuf -i 1-100 -n 1`fa il trucco.
Laizer,

dannazione, @Laizer mi hai fatto imparare di nuovo qualcosa! (grazie!)
UncaAlby,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.