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. |
Che cos’è un’espressione cron
Un’espressione cron dichiara in una sola riga quando debba eseguirsi un compito ricorrente. Cinque campi – minuto, ora, giorno del mese, mese e giorno della settimana – si dispongono da sinistra, separati da spazi, e ciascuno può combinare * per ogni valore, un elenco separato da virgole, un intervallo con trattino e un passo con barra. */15 9-17 * * 1-5 significa dunque «ogni quindici minuti dalle nove alle diciassette, dal lunedì al venerdì».
Questo strumento analizza ciò che lei inserisce e, **dopo aver enunciato la pianificazione a parole, calcola le cinque prossime esecuzioni** a partire da adesso. La ripartizione per campi compare a fianco, sicché si vede quale parte operi. Il giorno della settimana va da 0 per domenica a 6 per sabato come norma, ma si accetta anche la forma 7 per domenica usata da alcune realizzazioni, trattata internamente come 0. La ricerca delle esecuzioni future arriva a circa quattro anni; se nulla vi corrisponde, lo si dice apertamente.
Come si usa l’analizzatore cron
- Inserisca l’espressione Indichi i cinque campi – minuto, ora, giorno, mese e giorno della settimana – separati da spazi. Un numero errato di campi, o un valore fuori intervallo, provoca un avviso.
- Prema «analizza» Il senso della pianificazione compare a parole. Verifichi prima qui di non aver letto male la propria espressione.
- Scorra la ripartizione per campi Viene elencato che cosa rappresenti ciascuno fra minuto, ora, giorno, mese e giorno della settimana. Denuncia ogni campo che porti un valore non voluto.
- Legga le prossime esecuzioni I cinque momenti seguenti sono dati come date e ore. Uno scarto rispetto all’intenzione – fissare il 31 in mesi che non lo hanno, per esempio – compare come date concrete.
- Attinga ai modelli consueti Una tavola raccoglie i più noti: ogni minuto, ogni cinque minuti, all’ora esatta, alle nove nei giorni feriali. Partire dal più vicino e modificarlo è la via breve.
Consigli per sfruttarlo al meglio
- 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.
Dove l’analizzatore cron è utile
Verificare il senso prima che finisca nel crontab
Analizzata prima di registrarla su un server, previene i guai di un compito che gira assai più spesso del voluto – o che non gira affatto.
Controllare una pianificazione di GitHub Actions
L’espressione sotto lo schedule di un flusso di lavoro usa la medesima notazione a cinque campi. L’elenco delle prossime esecuzioni mostra se l’intervallo sia quello voluto.
Decifrare l’espressione altrui
Quando una configurazione ereditata reca qualcosa come 0 */6 * * *, tradurla in parole le dice subito a quali ore scatti.
Indagare un’esecuzione andata storta
Quando un compito non è girato all’ora dovuta, l’elenco delle prossime esecuzioni separa «la causa è l’espressione stessa» da «la causa è un’altra».
Quando vuole contare i giorni fra esecuzioni
Per contare quanto manchi alla prossima usi il conto alla rovescia; per contare in giorni lavorativi, il calcolo dei giorni lavorativi.
Termini su cron
- cron
- Il congegno dei sistemi di tipo Unix per eseguire compiti ripetutamente a ore stabilite. La tavola che accoppia ciascun compito al suo orario si chiama crontab.
- Campo
- Ciascun elemento di un’espressione cron, separato da spazi. Da sinistra sono minuto (0–59), ora (0–23), giorno del mese (1–31), mese (1–12) e giorno della settimana (0–6).
- Asterisco
- Rappresenta ogni valore che il campo possa assumere. Posto nel minuto significa ogni minuto; nel mese, ogni mese.
- Passo
- Si scrive come
*/15e simili per indicare un intervallo. Preleva valori lungo tutta l’estensione con un passo fisso: ogni quindici minuti, per esempio. - Intervallo
- Si scrive come
1-5per prendere insieme una serie di valori consecutivi. Nel campo del giorno della settimana è dal lunedì al venerdì; in quello dell’ora, dall’una alle cinque. - Numerazione dei giorni
- 0 è domenica e 6 sabato. Alcune realizzazioni accettano inoltre 7 per domenica, e questo strumento tratta 7 come 0.
- Fuso orario
- cron si legge di regola nell’ora dell’ambiente in cui gira. Se l’orologio di un server non è quello che lei presume, la medesima espressione scatterà a un’altra ora.
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.