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

  1. 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.
  2. Prema «analizza» Il senso della pianificazione compare a parole. Verifichi prima qui di non aver letto male la propria espressione.
  3. 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.
  4. 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.
  5. 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 */15 e 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-5 per 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

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.