Vai al contenuto
Cron toolkit

Cron expression parser e visualizer

Parser di cron expression POSIX 5-field (min hour dom mon dow) + alias (@yearly, @monthly, @weekly, @daily, @hourly) + spiegazione natural language + visualizer settimanale (matrice 7 giorni x 24 ore) + lista delle prossime 20 esecuzioni. Supporta sintassi standard Unix + AWS EventBridge + GitHub Actions + Kubernetes CronJob.

Esempi rapidi

Come usare il parser

  1. 1

    Sintassi standard 5-field

    minuti ore giorno_mese mese giorno_settimana. Range: minuti 0-59, ore 0-23, giorno mese 1-31, mese 1-12 (o JAN-DEC), giorno settimana 0-6 (0=domenica, o SUN-SAT). Operatori: * (any), , (lista: 1,3,5), - (range: 1-5), / (step: */15).

  2. 2

    Alias

    @yearly = 0 0 1 1 *, @monthly = 0 0 1 * *, @weekly = 0 0 * * 0, @daily = 0 0 * * *, @hourly = 0 * * * *. Sintassi non standard ma diffusa (Unix, Vixie cron, AWS EventBridge).

  3. 3

    Visualizer settimanale

    Matrice 7 giorni (lun-dom) x 24 ore. Le celle attive sono evidenziate in blu. Per cron ad alta frequenza (es. * * * * * ogni minuto) la matrice è tutta blu.

  4. 4

    Prossime esecuzioni

    Lista delle prossime 20 esecuzioni a partire da adesso. Utile per validare a colpo d'occhio: '0 9 * * 1-5' = ogni giorno feriale alle 9:00, gli orari nella lista confermano il pattern.

Cron expression: cosa controlla questo parser

Sintassi POSIX 5-field. Standard Unix dal 1976 (V7). 5 campi separati da spazio: minuti, ore, giorno del mese, mese, giorno della settimana. Operatori: * (qualsiasi valore), , (lista valori), - (range inclusivo), / (step). Esempio: */15 9-17 * * 1-5 = ogni 15 minuti dalle 9 alle 17, lun-ven.

Differenze fra dialetti. Standard POSIX (Vixie cron Linux) usa 5 campi. AWS EventBridge usa 6 campi (aggiunge anno opzionale). Quartz Java usa 6-7 campi (aggiunge secondi e anno). Il parser gestisce il caso 5-field standard. Per AWS EventBridge: aggiungi ? al posto del giorno della settimana o del giorno del mese (mutual exclusion AWS).

Alias. Vixie cron (Linux standard) supporta alias non POSIX: @yearly / @annually / @monthly / @weekly / @daily (alias di @midnight) / @hourly / @reboot (esegue all'avvio del sistema, NON gestito dal parser perché non ha schedulazione temporale). Il parser espande gli alias internamente prima del calcolo.

Caveat di scope. Il parser calcola le prossime esecuzioni sulla base dell'orologio del browser (timezone locale). Per cron in production con timezone diversa (es. server UTC ma cron in Europe/Rome): le prossime esecuzioni mostrate dal tool potrebbero essere offset. Per debug rigoroso: crontab -l sul server reale e cron-utils in Java/croniter in Python con timezone esplicita.

Esempi comuni

CronSignificato
0 0 * * *Ogni giorno a mezzanotte
0 9 * * 1-5Ogni giorno feriale alle 9:00
*/15 * * * *Ogni 15 minuti
0 */2 * * *Ogni 2 ore (al minuto 0)
0 0 1 * *Il primo giorno di ogni mese a mezzanotte
0 0 1 1 *Capodanno a mezzanotte
30 6 * * 0Domenica alle 6:30
@dailyOgni giorno a mezzanotte (alias)
@hourlyOgni ora al minuto 0

Glossario

Termini tecnici usati in questa pagina, spiegati in due righe.

Cron #
Demone Unix per schedulazione di job ricorrenti. Inventato da Brian Kernighan, AT&T Bell Labs, 1975. Versione moderna: Vixie cron (1987) usata su Linux/BSD.
Crontab #
File di configurazione del demone cron. crontab -e per editare, crontab -l per listare. Sintassi: una riga per job, formato 5-field + comando.
Vixie cron #
Implementazione di cron di Paul Vixie (1987), standard Linux/BSD. Supporta alias (@yearly, @hourly, @reboot), esecuzione come utente specifico (file /etc/cron.d/), nomi di mese/giorno settimana (JAN, MON, ecc).
AWS EventBridge cron #
Variante AWS con 6 campi: minuti ore giorno_mese mese giorno_settimana anno. Anno è opzionale (range 1970-2199). Supporta ? per mutual exclusion fra giorno_mese e giorno_settimana.
Quartz cron #
Variante Java Quartz con 6-7 campi: secondi minuti ore giorno_mese mese giorno_settimana anno. Diversi operatori avanzati (L, W, #) per ultimo giorno mese, ultimo lavorativo, n-esimo giorno settimana.
Step operator #
Operatore / per ripetizione regolare. */15 = ogni 15 a partire da 0 (0, 15, 30, 45). 5/10 = ogni 10 a partire da 5 (5, 15, 25...).

Domande frequenti sul cron

0 0 * * 7 è lo stesso di 0 0 * * 0?
Si'. Sia 0 (domenica) che 7 (anche domenica) rappresentano la stessa giornata della settimana in Vixie cron. Convenzione storica per accomodare diverse tradizioni (US: 0=Sun, ISO: 7=Sun).
Come faccio 'ogni 30 minuti' iniziando alle 9:15?
15,45 * * * * = al minuto 15 e 45 di ogni ora. Lo step */30 partirebbe da 0, 30 - non da 15. Per offset specifici: lista esplicita.
Cron supporta esecuzioni sub-minute (ogni N secondi)?
No. POSIX cron è minute-based. Per esecuzioni più frequenti: usa systemd timer (Linux moderno), oppure script while true; do...; sleep 30; done. AWS Step Functions / Cloud Scheduler GCP supportano sub-minute con sintassi diversa.
Differenza @reboot vs schedulazione temporale?
@reboot esegue il job una volta all'avvio del demone cron (tipicamente al boot del sistema), poi mai più fino al prossimo reboot. NON ha schedulazione temporale ricorrente. Il parser non calcola 'next run' per @reboot perché dipende da quando si riavvia la macchina.
GitHub Actions accetta sintassi cron?
Si', POSIX 5-field standard. Esempio: schedule: - cron: '0 6 * * 1'. Caveat: GitHub Actions cron ha precisione +-5 minuti per fairness, e i job possono essere skippati durante alta utilizzazione del scheduler. Per timing rigoroso: usa workflow_dispatch o webhook.
Posso testare 'ogni primo lunedi' del mese?
Non con sintassi POSIX standard. Hack: 0 9 1-7 * 1 = ogni lunedi del primo settimo del mese (cioe' il primo lunedi). Funziona perché nei primi 7 giorni del mese cade esattamente un lunedi. Quartz cron supporta 1#1 = primo lunedi nativamente, POSIX no.
Le prossime esecuzioni sono in timezone locale o UTC?
Locale (timezone del browser). Per cron in production con timezone diversa: il parser non offre selettore TZ. Workaround: in production usa timezone esplicita nel cron daemon (Linux: CRON_TZ=Europe/Rome in crontab) e calcola localmente con quella TZ.

Chi sviluppa questi strumenti?

Maurizio Fonte, consulente IT senior con oltre 20 anni di esperienza in PHP, Laravel, infrastrutture Linux, cybersecurity e integrazione AI/LLM in azienda. Backend di produzione, modernizzazione di codice legacy, audit di sicurezza, agenti AI e MCP server custom: il lavoro che sta dietro a questi strumenti.

Conosci Maurizio Fonte