Costruttore di espressioni cron
Strumento gratuito che compone un'espressione cron scegliendo minuti, ore, giorno, mese e giorno della settimana da elenchi a discesa o da campi numerici. Mostra subito l'espressione generata, la descrizione a parole e le cinque esecuzioni successive: comodo per preparare le pianificazioni di crontab e di GitHub Actions.
Prospetto delle pianificazioni più comuni
Le espressioni cron delle pianificazioni tipiche. Facendo clic su una riga, la relativa preimpostazione viene riportata nel costruttore qui sopra.
| Nome della preimpostazione | Espressione cron | Significato |
|---|---|---|
| Ogni giorno a mezzanotte | 0 0 * * * | Viene eseguito ogni giorno a mezzanotte. |
| Giorni feriali alle nove | 0 9 * * 1-5 | Viene eseguito alle nove nei giorni feriali, dal lunedì al venerdì. |
| Al minuto zero di ogni ora | 0 * * * * | Viene eseguito al minuto zero di ogni ora, cioè una volta all'ora. |
| Ogni lunedì | 0 0 * * 1 | Viene eseguito ogni lunedì a mezzanotte. |
Che cos'è un'espressione cron
Un'espressione cron è formata dai cinque campi numerici che indicano allo scheduler di un sistema UNIX quando eseguire qualcosa. Da sinistra a destra sono minuto, ora, giorno del mese, mese e giorno della settimana, separati da spazi, come in 30 3 * * 1, che significa «ogni lunedì alle 3:30 del mattino». La notazione è molto compatta, e proprio lì sta il suo punto debole: un campo scritto male resta di solito valido dal punto di vista sintattico, così l'attività gira in silenzio nell'orario sbagliato e nessuno se ne accorge se non molto tempo dopo.
Questo strumento vi permette di impostare ciascuno dei cinque campi scegliendo fra cinque modalità — tutti i valori, un valore preciso, un elenco, un intervallo o un passo — e mostra insieme l'espressione ottenuta e la sua lettura in linguaggio corrente. Poiché sulla stessa schermata si percorre sia la strada dagli inserimenti all'espressione sia quella dall'espressione alla frase, potete verificare che quanto avete scritto corrisponda a quanto intendevate prima che arrivi su un server. Tutta l'elaborazione avviene nel vostro browser: nulla di ciò che digitate viene inviato altrove.
Come costruire un'espressione cron
- Partite da un modello Scegliete il più vicino fra i quattro disponibili — mezzanotte ogni giorno, le 9 nei giorni feriali, ogni ora in punto oppure ogni lunedì — e i campi vengono compilati da soli. È più rapido che costruire da zero e lascia meno spazio alle sviste.
- Scegliete una modalità per ogni campo Per minuto, ora, giorno, mese e giorno della settimana selezionate tutti i valori (*), un valore preciso, un elenco, un intervallo o un passo (*/n). Lasciate su «tutti i valori» i campi che non vi interessano.
- Inserite i valori L'elenco accetta numeri separati da virgole, l'intervallo chiede un inizio e una fine, il passo chiede ogni quanto eseguire. I minuti vanno da 0 a 59, le ore da 0 a 23, i giorni da 1 a 31, i mesi da 1 a 12 e i giorni della settimana da 0 a 6, dove 0 indica la domenica.
- Confrontate espressione e descrizione Leggete affiancate l'espressione generata e la frase che compare sotto. Se la frase non corrisponde alle vostre intenzioni, correggete il campo sbagliato.
-
Incollatela nel vostro crontab
Quando la lettura è corretta, copiate l'espressione, aprite la vostra tabella con
crontab -e, mettetela all'inizio di una riga e scrivete di seguito il comando da eseguire.
Consigli per sfruttarlo al meglio
- Impostando il campo del giorno della settimana in modalità intervallo da 1 a 5, indicherete in un solo passaggio i giorni feriali, dal lunedì al venerdì.
- La modalità a elenco indica più valori separati da virgole: scrivendo per esempio «0,15,30,45» nel campo dei minuti si ottiene lo stesso effetto di un'esecuzione ogni quindici minuti.
- Se impostate a un valore diverso dall'asterisco tanto il giorno del mese quanto il giorno della settimana, la specifica di cron applica una condizione di disgiunzione: l'esecuzione avviene quando è soddisfatta anche una sola delle due. Fa eccezione la modalità a passo (*/n): poiché inizia con l'asterisco, cron la considera non limitata e, insieme a un giorno della settimana, l'esecuzione avviene solo nei giorni che soddisfano entrambe le condizioni (congiunzione).
- L'espressione generata si copia negli appunti con l'apposito pulsante e si può incollare direttamente in una tabella di pianificazione o nel file YAML di GitHub Actions.
- Facendo clic su un pulsante di preimpostazione o su una riga del prospetto qui sotto, la pianificazione corrispondente viene riportata nel costruttore con un solo clic.
Dove questo strumento è utile
Programmare backup ed elaborazioni batch
I dump del database e l'aggregazione dei log si collocano di solito nelle ore di minore traffico. Potete comporre un «ogni giorno alle 3:05» senza dover prima richiamare alla memoria la sintassi.
Eseguire soltanto nei giorni lavorativi
Impostare il campo del giorno della settimana sull'intervallo 1–5 limita l'attività ai giorni feriali. Cron non sa nulla delle festività, quindi, se dovete escluderle, inserite il controllo dentro il vostro script.
Decifrare un'espressione scritta da altri
Quando ereditate un server il cui crontab contiene qualcosa come */15 2-5 * * *, riprodurre qui la stessa impostazione e leggere la descrizione evita di fraintenderla.
Impostare pianificazioni per CI e container
Le voci schedule di GitHub Actions e i CronJob di Kubernetes usano gli stessi cinque campi. Di norma però funzionano in UTC, perciò conviene spostare il campo dell'ora in base al fuso.
I termini di cron
- cron
- Il programma residente dei sistemi di tipo UNIX che esegue comandi negli orari indicati. La configurazione risiede in una tabella propria di ciascun utente, chiamata crontab.
- crontab
- Indica sia la tabella di pianificazione stessa sia il comando che serve a modificarla (
crontab -e). Ogni riga accosta un'espressione cron al comando da eseguire. - Asterisco (*)
- Significa «tutti i valori» di quel campo. Un asterisco nel campo dei minuti vuol dire ogni minuto; nel campo del mese, tutti i mesi.
- Passo (*/n)
- Esegue ogni n valori. Un
*/15nel campo dei minuti corrisponde ai minuti 0, 15, 30 e 45. Il conteggio parte sempre dal valore più basso del campo: non significa «n minuti dopo l'ultima esecuzione». - Elenchi e intervalli
- L'elenco enumera valori separati da virgole (
1,15); l'intervallo li unisce con un trattino (9-17). I due si possono combinare nello stesso campo, come in1-5,10. - Giorno del mese insieme al giorno della settimana
- Nella maggior parte delle implementazioni di cron, se sia il campo del giorno del mese sia quello del giorno della settimana sono diversi da *, l'attività parte quando corrisponde uno dei due, non entrambi. Per questo
0 0 1 * 1significa «il 1º di ogni mese e, inoltre, ogni lunedì»: una combinazione che sorprende di frequente. Fa eccezione la modalità a passo (*/n): poiché inizia con l'asterisco, cron la considera non limitata e, insieme a un giorno della settimana, l'esecuzione avviene solo nei giorni che soddisfano entrambe le condizioni (congiunzione).
Domande frequenti
A proposito — perché scrivere un'espressione cron è più difficile che leggerla
Un'espressione cron sembra facile da scrivere una volta imparati i cinque campi, ma provando a comporla a mano occorre ricordare dettagli minuti — se sia corretto «*/15» oppure «1-30/5», se il giorno della settimana cominci da 0 o da 1 — e ci si impiglia più del previsto. Leggere invece un'espressione già scritta e comprenderne il significato, cioè il compito dello strumento di analisi presente su questo sito, è un lavoro relativamente meccanico: basta scorrere i campi in ordine.
Questo strumento muove proprio da tale asimmetria e assiste chi deve comporre l'espressione. Elenchi a discesa e campi numerici permettono di esprimere direttamente l'intenzione — «voglio l'esecuzione alle nove nei giorni feriali» — e l'espressione corrispondente si compone da sé, eliminando del tutto la fatica di memorizzare la sintassi.
Come ultimo passo per accertare che l'espressione generata si comporti come si desidera, lo strumento mostra in anteprima le cinque esecuzioni successive. Poiché la condizione di disgiunzione che scatta quando si limitano insieme giorno del mese e giorno della settimana è tutt'altro che intuitiva, poter vedere con i propri occhi le date reali aiuta a prevenire esecuzioni con una periodicità diversa da quella prevista. Fa eccezione la modalità a passo (*/n): poiché inizia con l'asterisco, cron la considera non limitata e, insieme a un giorno della settimana, l'esecuzione avviene solo nei giorni che soddisfano entrambe le condizioni (congiunzione).