Le basi delle espressioni cron: comprendere i 5 campi
Una spiegazione in linguaggio semplice della sintassi cron standard che puoi applicare immediatamente
Prova il Cron ExplainerPerche le espressioni cron mettono in difficolta anche gli sviluppatori esperti
La maggior parte degli errori cron inizia prima del deployment, quando l'intento della pianificazione e la sintassi divergono. Vuoi che un job venga eseguito ogni giorno feriale alle 8 del mattino, ma un valore fuori posto lo sposta a ogni ora o ogni giorno del mese. La causa principale e quasi sempre la stessa: i cinque campi di un'espressione cron sono compatti, posizionali e inflessibili.
Un'espressione cron standard e una singola riga di cinque campi separati da spazi. Ogni campo corrisponde a un'unita di tempo, e insieme definiscono una pianificazione ricorrente. Non ci sono etichette, nessuna parola chiave predefinita e nessun margine per l'ambiguita una volta che lo scheduler legge la riga.
Questo articolo spiega la struttura del formato cron a 5 campi in linguaggio semplice. Imparerai cosa controlla ogni campo, come funzionano i token comuni e dove si verificano i fraintendimenti tipici. Ogni esempio puo essere verificato istantaneamente nel Cron Explainer di Cronwise, che ti fornisce una spiegazione in linguaggio naturale e un'anteprima delle prossime esecuzioni con fuso orario per qualsiasi espressione inserita.
Che tu stia scrivendo la tua prima voce crontab o revisionando una pianificazione scritta da qualcun altro, comprendere questi cinque campi e la base di ogni flusso di lavoro cron successivo.
I cinque campi: cosa controlla ciascuno
Ogni espressione cron standard segue lo stesso formato posizionale. Da sinistra a destra, i cinque campi sono:
| Posizione | Campo | Valori consentiti | Descrizione |
|---|---|---|---|
| 1 | Minuto | 0 – 59 | Il minuto dell'ora in cui il job viene eseguito |
| 2 | Ora | 0 – 23 | L'ora del giorno (formato 24 ore) |
| 3 | Giorno del mese | 1 – 31 | Il giorno del calendario |
| 4 | Mese | 1 – 12 | Il mese dell'anno |
| 5 | Giorno della settimana | 0 – 7 | Il giorno della settimana (0 e 7 rappresentano entrambi la domenica) |
Un esempio concreto rende chiara la corrispondenza. L'espressione 30 8 * * 1-5 significa: al minuto 30, dell'ora 8, ogni giorno del mese, in ogni mese, ma solo nei giorni feriali da lunedi a venerdi. In linguaggio semplice: 8:30 del mattino, da lunedi a venerdi.
L'asterisco (*) e un jolly che corrisponde a ogni valore consentito per quel campo. Quando lo vedi, leggilo come "ogni". Quindi * * * * * significa ogni minuto di ogni ora di ogni giorno — la pianificazione piu frequente possibile nel cron standard.
Token comuni e come funzionano
Oltre al jolly asterisco, i campi cron supportano diversi token che ti permettono di esprimere intervalli, step e liste senza scrivere voci separate.
Virgola (Lista)
Una virgola separa valori individuali. 0 9,12,18 * * * si attiva alle 9:00, 12:00 e 18:00 ogni giorno. Ogni valore nella lista viene trattato indipendentemente.
Trattino (Intervallo)
Un trattino definisce un intervallo continuo. 0 9-17 * * * si attiva all'inizio di ogni ora dalle 9:00 alle 17:00. Gli intervalli sono inclusivi su entrambe le estremita.
Barra (Step)
Una barra definisce un intervallo di step. */15 * * * * si attiva ogni 15 minuti, partendo dal minuto 0. Puoi combinare un intervallo con uno step: 0-30/10 * * * * si attiva ai minuti 0, 10, 20 e 30 di ogni ora.
Combinare i token
I token possono essere mescolati all'interno di un singolo campo. 0 8-12,18 * * 1-5 si esegue all'inizio delle ore da 8 a 12 e anche all'ora 18, ma solo nei giorni feriali. Ogni campo viene valutato indipendentemente, e lo scheduler si attiva quando tutti e cinque i campi corrispondono simultaneamente.
Per un'analisi piu approfondita delle strategie di lettura, consulta Come leggere le espressioni cron rapidamente, che copre modelli mentali per analizzare le espressioni a colpo d'occhio.
Come interpretare pianificazioni reali
Leggere correttamente un'espressione cron significa tradurre ogni campo in ordine e poi combinarli in una singola frase. Ecco esempi pratici con i loro equivalenti in linguaggio naturale:
| Espressione | Significato | Quando usarla | Note sui rischi |
|---|---|---|---|
0 0 * * * | Mezzanotte ogni giorno | Job batch giornalieri, rotazione dei log | Carico elevato se molti job condividono questo slot |
*/5 * * * * | Ogni 5 minuti | Health check, polling delle code | Alta frequenza; conferma che il job sia idempotente |
0 9 1 * * | 9:00 il primo di ogni mese | Report mensili | I mesi con meno di 31 giorni si comportano normalmente |
30 2 * * 0 | 2:30 ogni domenica | Finestra di manutenzione settimanale | Potrebbe sovrapporsi con le transizioni dell'ora legale in primavera |
0 */2 * * 1-5 | Ogni 2 ore nei giorni feriali | Polling in orario lavorativo | Si esegue alle 0, 2, 4 … 22 — non solo nelle ore lavorative |
L'ultimo esempio e un fraintendimento comune. */2 nel campo ora significa ogni seconda ora a partire da 0, non ogni due ore durante l'orario lavorativo. Se vuoi solo dalle 9 alle 17, hai bisogno di 0 9-17/2 * * 1-5 invece. Questo e esattamente il tipo di errore sottile che l'Explainer di Cronwise individua mostrandoti le prossime 10 esecuzioni pianificate nel tuo fuso orario.
Casi limite e limiti dei campi
Il formato a 5 campi ha dei limiti che e facile dimenticare. Comprenderli previene fallimenti silenziosi.
Interazione giorno del mese vs giorno della settimana
Nel cron standard, quando sia il giorno del mese (campo 3) sia il giorno della settimana (campo 5) sono impostati su valori non jolly, la maggior parte delle implementazioni li tratta come un'unione: il job si esegue se una delle due condizioni e vera. Questo significa che 0 9 15 * 1 non significa "il 15 se e un lunedi". Significa "ogni 15 del mese e ogni lunedi". Questa e una delle sorprese piu frequentemente segnalate nel cron.
Limiti di mese e giorno della settimana
Impostare il giorno del mese a 31 significa che il job verra eseguito solo nei mesi che hanno 31 giorni (gennaio, marzo, maggio, luglio, agosto, ottobre, dicembre). Saltera silenziosamente i mesi piu corti. Analogamente, i valori 0 e 7 del giorno della settimana rappresentano entrambi la domenica, ma mescolarli nella stessa espressione puo causare confusione durante le code review.
Dipendenza dal fuso orario
Un'espressione cron non contiene informazioni sul fuso orario di per se. Lo scheduler interpreta gli orari nel fuso orario in cui e configurato, che puo essere UTC, l'ora locale del server o un override esplicito. Se il tuo team copre piu fusi orari, conferma sempre l'impostazione del fuso orario dello scheduler prima di distribuire. Cronwise ti permette di selezionare qualsiasi fuso orario IANA e visualizzare le esecuzioni di conseguenza.
Applica cio che sai nel flusso di lavoro Cronwise
Una volta compresi i cinque campi, il passo successivo e passare dalla lettura delle espressioni cron alla loro creazione con sicurezza. Cronwise offre due percorsi complementari per questo.
Prima spiega, poi genera
Inizia con il Cron Explainer per verificare un'espressione esistente. Incollala, leggi il riepilogo in linguaggio naturale e scorri la tabella delle prossime esecuzioni. Se la pianificazione non corrisponde a cio che intendevi, passa al Generatore Cron per costruire l'espressione corretta visualmente, campo per campo. Il generatore elimina le congetture sulla sintassi permettendoti di selezionare i valori da menu e schede.
Checklist di verifica prima del deployment
| Controllo | Perche e importante | Criterio di superamento |
|---|---|---|
| Il riepilogo in linguaggio naturale corrisponde all'intento | Individua errori nell'ordine dei campi | La frase riassuntiva si allinea con il tuo obiettivo di pianificazione |
| I timestamp delle prossime esecuzioni sono corretti | Individua uso errato dei token (intervalli, step) | Le prime 5 esecuzioni corrispondono a date e orari previsti |
| Il fuso orario corrisponde all'ambiente di destinazione | Previene esecuzioni sfasate di ore | Il fuso orario selezionato corrisponde a quello configurato sullo scheduler |
| Nessun avviso di validazione | Individua pattern rischiosi in anticipo | Zero avvisi o ogni avviso intenzionalmente accettato |
Per una guida completa del builder visuale, leggi Generatore cron visuale: flusso di lavoro passo passo, che copre la navigazione tra le schede, i preset salvati e le opzioni di esportazione.
Conclusione: distribuisci con sicurezza
Il formato cron a 5 campi e ingannevolmente semplice: minuto, ora, giorno del mese, mese e giorno della settimana. Padroneggiarlo significa conoscere non solo le posizioni dei campi ma anche come si combinano i token, dove si nascondono i casi limite e perche un controllo di validazione di 10 secondi vale la pena ogni volta.
Ecco le regole chiave da portare con te:
- Leggi i campi da sinistra a destra: minuto, ora, giorno, mese, giorno della settimana.
- Un asterisco significa "ogni" — non e un segnaposto o un valore predefinito.
- Intervalli, liste e step possono essere combinati, ma ogni campo viene valutato indipendentemente.
- Giorno del mese e giorno della settimana formano un'unione quando entrambi sono non jolly — non un'intersezione.
- Verifica sempre il fuso orario dello scheduler e visualizza le prossime esecuzioni prima di distribuire.
Cronwise e costruito per rendere questa verifica veloce. Incolla un'espressione, leggi la spiegazione, controlla le esecuzioni e distribuisci con sicurezza. Sfoglia tutti gli articoli cron su Cronwise per continuare ad imparare, oppure vai direttamente allo strumento.