Espressioni Cron
Introduzione
cron è uno strumento UNIX in circolazione da molto tempo, quindi le sue capacità di pianificazione sono potenti e comprovate.
Le espressioni Cron sono potenti, ma possono creare confusione. Questo tutorial mira a eliminare parte del mistero della creazione di un'espressione cron, fornendo agli utenti una risorsa che possono visitare prima di dover chiedere in un forum o in una mailing list.
Formato
Un'espressione cron è una stringa composta da 6 o 7 campi separati da spazi bianchi. I campi possono contenere uno qualsiasi dei valori consentiti, insieme a varie combinazioni di caratteri speciali consentiti per quel campo. I campi sono i seguenti:
Campo | Obbligatorio | Valori Ammessi | Caratteri Speciali Ammessi |
---|---|---|---|
Secondi | SI | 0-59 | , - * / |
Minuti | SI | 0-59 | , - * / |
Ore | SI | 0-23 | , - * / |
Giorno del mese | SI | 1-31 | , - * ? / L W |
Mese | SI | 1-12 or JAN-DEC | , - * / |
Giorno dell'anno | SI | 1-7 or SUN-SAT | , - * ? / L # |
Anno | NO | empty, 1970-2099 | , - * / |
Quindi le espressioni cron possono essere semplici come questa: * * * * ? *
o più complesse, come questa: 0/5 14,18,3-39,52 * ? GEN, MAR, SET LUN-VEN 2002-2010
Caratteri speciali
-
* ("tutti i valori") - utilizzato per selezionare tutti i valori all'interno di un campo. Ad esempio, "*" nel campo dei minuti significa "ogni minuto".
-
? ("nessun valore specifico") - utile quando è necessario specificare qualcosa in uno dei due campi in cui è consentito il carattere, ma non nell'altro. Ad esempio, se voglio che il mio trigger si attivi in un particolare giorno del mese (diciamo, il 10), ma non mi interessa quale giorno della settimana sarà, metterei "10" nel giorno di -mese campo e "?" nel campo del giorno della settimana. Vedere gli esempi seguenti per chiarimenti.
-
- - utilizzato per specificare gli intervalli. Ad esempio, "10-12" nel campo dell'ora significa "le ore 10, 11 e 12".
-
, - utilizzato per specificare valori aggiuntivi. Ad esempio, "LUN,MER,VEN" nel campo del giorno della settimana significa "i giorni lunedì, mercoledì e venerdì".
-
/ - utilizzato per specificare gli incrementi. Ad esempio, "0/15" nel campo dei secondi significa "i secondi 0, 15, 30 e 45". E "5/15" nel campo dei secondi significa "i secondi 5, 20, 35 e 50". Puoi anche specificare "/" dopo il carattere "" - in questo caso "" equivale ad avere "0" prima di "/". '1/3' nel campo del giorno del mese significa "spara ogni 3 giorni a partire dal primo giorno del mese".
-
L ("ultimo") - ha un significato diverso in ciascuno dei due campi in cui è consentito. Ad esempio, il valore "L" nel campo del giorno del mese significa "l'ultimo giorno del mese" - giorno 31 per gennaio, giorno 28 per febbraio negli anni non bisestili. Se utilizzato da solo nel campo del giorno della settimana, significa semplicemente “7” o “SAT”. Ma se utilizzato nel campo del giorno della settimana dopo un altro valore, significa "l'ultimo xxx giorno del mese" - ad esempio "6L" significa "l'ultimo venerdì del mese". Puoi anche specificare un offset dall'ultimo giorno del mese, ad esempio "L-3", che significherebbe il terzultimo giorno del mese di calendario. Quando si utilizza l'opzione "L", è importante non specificare elenchi o intervalli di valori, poiché si ottengono risultati confusi o imprevisti.
-
W ("giorno della settimana") - utilizzato per specificare il giorno della settimana (lunedì-venerdì) più vicino al giorno specificato. Ad esempio, se si specifica “15W” come valore per il campo del giorno del mese, il significato è: “il giorno della settimana più vicino al 15 del mese”. Quindi, se il 15 è un sabato, il grilletto scatterà venerdì 14. Se il 15 è una domenica, il grilletto scatterà lunedì 16. Se il 15 è un martedì, si attiverà martedì 15. Tuttavia, se si specifica "1W" come valore per il giorno del mese e il 1° è un sabato, il trigger si attiverà lunedì 3, poiché non "salterà" oltre il limite dei giorni di un mese. Il carattere "W" può essere specificato solo quando il giorno del mese è un solo giorno, non un intervallo o un elenco di giorni.
I caratteri 'L' e 'W' possono anche essere combinati nel campo del giorno del mese per ottenere 'LW', che si traduce in *"ultimo giorno della settimana del mese"*.
-
# - utilizzato per specificare "l'ennesimo" XXX giorno del mese. Ad esempio, il valore di “6#3” nel campo del giorno della settimana significa “il terzo venerdì del mese” (giorno 6 = venerdì e “#3” = il 3° del mese). Altri esempi: “2#1” = il primo lunedì del mese e “4#5” = il quinto mercoledì del mese. Tieni presente che se specifichi "#5" e non ci sono 5 del giorno della settimana specificato nel mese, quel mese non si verificherà alcuna attivazione.
I caratteri legali ei nomi di mesi e giorni della settimana non fanno distinzione tra maiuscole e minuscole. LUN è uguale a lun.
Esempi
Puoi trovare vari strumenti online molto utili, che possono aiutarti a creare la tua espressione cron come questi: http://www.cronmaker.com, https://crontab.guru
Ecco alcuni esempi completi:
**Espressione** | **Significato** |
0 0 12 * * ? | Attiva alle 12:00 (mezzogiorno) tutti i giorni |
0 15 10 ? * * | Attiva alle 10:15 tutti i giorni |
0 15 10 * * ? | Attiva alle 10:15 tutti i giorni |
0 15 10 * * ? * | Attiva alle 10:15 tutti i giorni |
0 15 10 * * ? 2005 | Attiva alle 10:15 tutti i giorni |
0 * 14 * * ? | Attiva ogni minuto a partire dalle 14:00 e termina alle 14:59, tutti i giorni |
0 0/5 14 * * ? | Attiva ogni 5 minuti a partire dalle 14:00 e termina alle 14:55, tutti i giorni |
0 0/5 14,18 * * ? | Attiva ogni 5 minuti a partire dalle 14:00 e termina alle 14:55, E ogni 5 minuti a partire dalle 18:00 e termina alle 18:55, tutti i giorni |
0 0-5 14 * * ? | Attiva ogni minuto a partire dalle 14:00 e termina alle 14:05, tutti i giorni |
0 10,44 14 ? 3 WED | Attiva alle 14:10 e alle 14:44 ogni mercoledì nel mese di marzo. |
0 15 10 ? * MON-FRI | Attiva alle 10:15 ogni lunedì, martedì, mercoledì, giovedì e venerdì |
0 15 10 15 * ? | Attiva alle 10:15 del 15 di ogni mese |
0 15 10 L * ? | Attiva alle 10:15 l'ultimo giorno di ogni mese |
0 15 10 L-2 * ? | Attiva alle 10:15 del penultimo ultimo giorno di ogni mese |
0 15 10 ? * 6L | Attiva alle 10:15 l'ultimo venerdì di ogni mese |
0 15 10 ? * 6L | Attiva alle 10:15 l'ultimo venerdì di ogni mese |
0 15 10 ? * 6L 2002-2005 | Attiva alle 10:15 ogni ultimo venerdì di ogni mese negli anni 2002, 2003, 2004 e 2005 |
0 15 10 ? * 6#3 | Attiva alle 10:15 il terzo venerdì di ogni mese |
0 0 12 1/5 * ? | Attiva alle 12:00 (mezzogiorno) ogni 5 giorni ogni mese, a partire dal primo giorno del mese. |
0 11 11 11 11 ? | Attiva ogni 11 novembre alle 11:11. |