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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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 */15 nel 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 in 1-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 * 1 significa «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

Una riga di pianificazione è una stringa di cinque valori o simboli separati da spazi: minuti, ore, giorno, mese e giorno della settimana. Con questo strumento basta scegliere ciascun campo da un elenco a discesa o da un campo numerico e i cinque campi si compongono da sé: potete ottenere un'espressione corretta senza conoscerne a memoria la sintassi.

Impostate il campo del giorno della settimana in modalità a valore preciso e scegliete 1, cioè lunedì: otterrete un'espressione come «0 0 * * 1», che corrisponde soltanto ai lunedì. Per cambiare l'orario, regolate allo stesso modo i campi dei minuti e delle ore.

Impostate il campo del giorno della settimana in modalità intervallo, da 1, lunedì, a 5, venerdì. Cron non conosce però il concetto di festività: per escludere le giornate festive occorre verificarle separatamente nello script.

Sì. Lo strumento genera espressioni nella forma standard a cinque campi, compatibile con Vixie cron, utilizzabile tale e quale nelle tabelle di pianificazione dei serventi Linux, nelle pianificazioni di GitHub Actions, nei lavori pianificati di Kubernetes e in tutti gli ambienti che adottano questa sintassi.
Tool-kun

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).