Espressione cron spiegata
Lo strumento funziona in entrambe le direzioni: inserisci una pianificazione in formato crontab per averla spiegata, oppure descrivila a parole per ottenere l’espressione.
Cinque campi: minuto, ora, giorno del mese, mese e giorno della settimana. Un sesto campo per i secondi può stare all’inizio.
Esempi
Significa
Ogni 15 minuti da 5 a 59, nelle ore 9–17, ogni lunedì–venerdì
Campo per campo
| Campo | Espressione | Valori |
|---|---|---|
| Minuto | 5-59/15 | 5, 20, 35, 50 |
| Ora | 9-17 | 9, 10, 11, 12, 13, 14, 15, 16, 17 |
| Giorno del mese | * | tutti |
| Mese | * | tutti |
| Giorno della settimana | MON-FRI | lunedì, martedì, mercoledì, giovedì, venerdì |
Prossime esecuzioni
…
L’ora legale è gestita come in Vixie cron e cronie: un orario fisso viene eseguito una volta anche se l’ora viene saltata o ripetuta, mentre i job con * nei minuti o nelle ore seguono il nuovo orologio.
Come funziona
Un’espressione cron ha cinque campi separati da spazi: minuto (0–59), ora (0–23), giorno del mese (1–31), mese (1–12) e giorno della settimana (0–7, dove sia 0 sia 7 indicano la domenica). Ogni minuto cron controlla se l’orologio corrisponde a tutti i campi e, in caso affermativo, avvia il job.
In ogni campo * significa ogni valore, 1-5 un intervallo, 1,15 un elenco e */15 un valore ogni quindici. I passi si possono combinare anche con gli intervalli: 5-59/15 dà i minuti 5, 20, 35 e 50. Mesi e giorni della settimana si possono scrivere con le abbreviazioni inglesi, JAN–DEC e SUN–SAT.
Quando sono limitati sia il giorno del mese sia il giorno della settimana, basta che uno dei due corrisponda. 0 0 13 * 5 viene quindi eseguito il 13 di ogni mese e ogni venerdì, non solo venerdì 13. La regola viene da Vixie cron e vale sulla maggior parte dei sistemi Linux. Se uno dei due campi inizia con *, anche con un passo come */2, devono corrispondere entrambi.
Le macro @hourly, @daily, @weekly, @monthly e @yearly (o @annually) sono scorciatoie per pianificazioni comuni, e @reboot esegue il job una volta all’avvio di cron. Un sesto campo per i secondi all’inizio, ? per «qualsiasi giorno» e L per l’ultimo giorno del mese vengono da Quartz, Spring e scheduler simili, e il normale crontab non li capisce.
Cron segue l’ora locale del computer. Quando inizia l’ora legale e l’orologio salta dalle 2:00 alle 3:00, un job con un orario fisso nell’ora saltata viene eseguito subito dopo il cambio, e quando l’orologio torna indietro viene eseguito una sola volta. I job con * nel campo dei minuti o delle ore seguono invece il nuovo orologio. L’elenco qui funziona allo stesso modo, nel tuo fuso orario o in UTC.
Controlla quale implementazione esegue la tua pianificazione. I servizi cloud hanno spesso varianti proprie: AWS EventBridge, per esempio, ha sei campi con l’anno per ultimo e richiede ? nel giorno del mese o nel giorno della settimana, e molti servizi lavorano in UTC anziché nell’ora locale.
Nella direzione opposta puoi descrivere la pianificazione a parole: «ogni lunedì alle 9», «ogni 15 minuti», «il primo giorno del mese alle 2:30», «nei giorni feriali tra le 9 e le 17» o «l’ultimo giorno del mese a mezzanotte». Gli orari si leggono come 9, 9.30, 9:30 e 09h30, gli intervalli come 9–17 e gli elenchi come 1, 15. Se la frase viene capita, l’espressione compare subito e la spiegazione qui sopra dice a parole che cosa significa, così puoi vedere se corrisponde a ciò che intendevi. Se non viene capita, sono indicate le parole che non è stato possibile leggere, invece di tirare a indovinare.
Il generatore sotto la casella di testo fa lo stesso con dei controlli al posto delle parole, e i due restano allineati: una frase compila i controlli e ogni modifica ai controlli riscrive l’espressione. Non tutto si può esprimere in cron. Nel normale crontab non c’è modo di dire «il primo lunedì del mese» o «una settimana sì e una no», e due orari diversi nella stessa frase (alle 9 e alle 17) si scrivono come elenco nel campo delle ore: 0 9,17 * * *.