Tutti gli articoli

Espressioni cron: come decifrare una pianificazione di attività

Un'espressione cron è un modo compatto per descrivere la pianificazione di esecuzione ricorrente di un'attività, usata nei sistemi Unix-like fin dagli anni '70. Cinque campi separati da spazi possono esprimere praticamente qualsiasi pianificazione regolare.

I cinque campi dell'espressione

Un'espressione cron standard ha la forma minuto ora giorno-del-mese mese giorno-della-settimana. Ad esempio, 30 14 * * 1 significa "alle 14:30 ogni lunedì" — gli asterischi significano "qualsiasi valore" per il giorno del mese e il mese.

Il significato di barre e virgole

Una barra dopo un asterisco, come in */15 * * * *, significa "ogni 15 unità" — in questo caso, ogni 15 minuti. Una virgola permette di elencare più valori specifici; ad esempio, 0 9,18 * * * esegue l'attività due volte al giorno: alle 9:00 e alle 18:00.

Perché il campo "giorno della settimana" confonde di più

Nel cron standard, sia il campo "giorno del mese" che "giorno della settimana" possono essere specificati contemporaneamente diversi da un asterisco — in tal caso, l'attività viene eseguita se almeno una delle due condizioni è soddisfatta (un OR logico, non un AND), il che contraddice l'aspettativa intuitiva della maggior parte delle persone.

La stessa sintassi sopravvive nell'hosting condiviso italiano

Su tantissimi hosting condivisi italiani usati da piccole e medie imprese, i pannelli come cPanel offrono ancora un'interfaccia per creare cron job diretti sul server per attività come l'invio di newsletter o il backup automatico del database — la stessa identica sintassi a cinque campi nata negli anni '70, oggi incapsulata in un modulo grafico ma tecnicamente immutata.

A cosa serve

  • Decifrare l'espressione cron di qualcun altro in una configurazione server o pipeline CI/CD.
  • Verificare che una pianificazione scritta sia corretta prima di distribuirla in produzione.
  • Pianificare l'orario esatto delle prossime esecuzioni di un'attività.

Ora legale/solare e cron

Se lo scheduler funziona in un fuso orario con transizione all'ora legale, un'attività pianificata per un orario inesistente (ad esempio le 2:30 nella notte in cui gli orologi vengono spostati avanti) potrebbe non essere eseguita quel giorno, mentre un'attività pianificata per un orario che si ripete quando gli orologi vengono spostati indietro potrebbe essere eseguita due volte. Per questo motivo, per le attività critiche si sceglie spesso un orario al di fuori della tipica finestra di transizione (ad esempio mezzanotte o le 3-4 del mattino) oppure si usa esplicitamente il fuso orario UTC.

Prova lo strumento