Analisi delle espressioni cron e calcolo delle prossime esecuzioni

Strumento gratuito che analizza un'espressione cron — minuti, ore, giorno, mese e giorno della settimana — e ne illustra il significato in parole, gestendo intervalli, passi ed elenchi separati da virgole, e calcola automaticamente le cinque esecuzioni successive. Comodo per verificare le pianificazioni di crontab e di GitHub Actions.

La sintassi di un'espressione cron (cinque campi)

Un'espressione cron indica, da sinistra a destra e separati da spazi, cinque campi: minuti, ore, giorno del mese, mese e giorno della settimana. In ciascun campo si possono usare i caratteri speciali qui descritti.

Posizione Campo Intervallo ammesso
1 Minuti 0-59
2 Ore 0-23
3 Giorno del mese 1-31
4 Mese 1-12
5 Giorno della settimana 0-7

Per il giorno della settimana lo standard prevede da 0, domenica, a 6, sabato; questo strumento accetta anche il 7 come domenica, notazione usata da alcune realizzazioni di cron, e lo tratta internamente come 0.

In ciascun campo si possono usare l'asterisco per indicare tutti i valori, l'elenco separato da virgole come 1,15,30, l'intervallo con il trattino come 1-5 e il passo con la barra come */15 oppure 1-30/5; queste forme si combinano liberamente.

Gli schemi cron più comuni

Espressione cron Significato
* * * * * Viene eseguito ogni minuto.
*/5 * * * * Viene eseguito ogni cinque minuti.
0 * * * * Viene eseguito al minuto zero di ogni ora, cioè una volta all'ora.
0 0 * * * Viene eseguito ogni giorno a mezzanotte.
0 9 * * 1-5 Viene eseguito alle nove nei giorni feriali, dal lunedì al venerdì.
0 0 1 * * Viene eseguito il primo giorno di ogni mese a mezzanotte.
0 0 1 1 * Viene eseguito il primo gennaio di ogni anno a mezzanotte.
*/15 9-17 * * 1-5 Viene eseguito ogni quindici minuti dalle nove alle diciassette nei giorni feriali.

Consigli

  • Come in «*/15 9-17 * * 1-5», le virgole, gli intervalli con il trattino e i passi con la barra si combinano liberamente.
  • Per il giorno della settimana lo standard prevede da 0, domenica, a 6, sabato, ma lo strumento accetta anche il 7 come domenica, notazione usata da alcune realizzazioni di cron.
  • Se limitate a valori diversi 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.
  • Anche le pianificazioni di GitHub Actions usano la stessa sintassi cron a cinque campi: lo strumento serve quindi a verificare quando si attiverà un flusso di lavoro.
  • L'ora reale di esecuzione può discostarsi secondo il fuso orario configurato sul servente: dopo aver modificato la tabella di pianificazione, conviene verificare anche l'orario corrente della macchina.

Domande frequenti

Sì. La specifica standard rappresenta la domenica con lo 0, ma alcune realizzazioni, come Vixie cron, trattano anche il 7 come notazione alternativa. Questo strumento interpreta entrambe come domenica.

Non c'è precedenza: si applica una condizione di disgiunzione. Quando entrambi i campi sono limitati a valori diversi dall'asterisco, l'esecuzione avviene nei giorni che soddisfano anche una sola delle due condizioni. Se uno dei due resta un asterisco, conta soltanto l'altro.

La struttura fondamentale a cinque campi è la medesima. GitHub Actions, però, valuta le pianificazioni sempre in tempo coordinato universale e l'esecuzione può ritardare di alcuni minuti o decine di minuti: in questo differisce dalla tabella di pianificazione di un servente.

Sì, in tutti e cinque: minuti, ore, giorno, mese e giorno della settimana. Nei campi con un intervallo di valori ristretto, come il mese o il giorno della settimana, le combinazioni davvero utili sono però poche.
Tool-kun

A proposito — mezzo secolo di cron

Il nome cron deriverebbe dal greco Chronos, il tempo, e designa il pianificatore di lavori presente fin dai primi anni Settanta nei sistemi UNIX. La sintassi essenziale, capace di esprimere con cinque soli campi tanto «ogni minuto» quanto «un preciso istante di un preciso giorno dell'anno», è ancora largamente usata a quasi mezzo secolo di distanza.

Negli ultimi anni non soltanto le tabelle di pianificazione dei serventi Linux, ma anche molti strumenti di integrazione continua e molte piattaforme a contenitori — GitHub Actions, GitLab CI, i lavori pianificati di Kubernetes — hanno adottato tale e quale questa sintassi a cinque campi. È un fatto curioso che una notazione concepita ai tempi di UNIX continui a essere usata immutata negli ambienti nativi per la nube.

Uno dei punti in cui più facilmente si inciampa è il comportamento quando si indicano insieme il giorno del mese e il giorno della settimana. L'intuito suggerisce una congiunzione, cioè i giorni che soddisfano entrambe le condizioni, ma la specifica prevede una disgiunzione, cioè quelli che ne soddisfano almeno una: di qui frequenti esecuzioni con una periodicità diversa da quella voluta.