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