PK Systems PK Systems
Strumenti per sviluppatori

Generatore ed Esplicatore di Espressioni Cron

Costruisci espressioni cron visivamente campo per campo, oppure incollane una esistente per ottenere una spiegazione in italiano e i prossimi cinque orari di esecuzione.

Generatore ed Esplicatore di Espressioni Cron

Espressione cron

* * * * *

Modifica un campo qui sopra per vedere l'espressione aggiornarsi.

Cos'è un'espressione cron?

Un'espressione cron è una pianificazione a cinque campi usata dagli schedulatori di tipo Unix, dai sistemi CI, dai CronJob di Kubernetes, da AWS EventBridge, GitHub Actions e dalla maggior parte degli esecutori di job moderni. Ogni campo controlla un'unità di tempo — minuto, ora, giorno del mese, mese e giorno della settimana — e supporta quattro abbreviazioni: * (qualsiasi), un elenco separato da virgola (0,15,30,45), un intervallo (1-5) e un passo (*/10). Combinandoli puoi descrivere quasi qualsiasi pianificazione ricorrente senza dover scrivere un calendario a mano.

Come usare questo generatore

Scegli un preset come punto di partenza istantaneo, oppure costruisci l'espressione campo per campo. Ogni campo ha quattro modalità: Ogni emette *; Elenco specifico accetta valori separati da virgola; Intervallo accetta una coppia inizio-fine; Passo accetta un intervallo (*/N) con un offset di partenza opzionale. L'espressione e una descrizione in italiano si aggiornano in tempo reale al variare di qualsiasi cosa. Per fare il percorso inverso, incolla una stringa cron nel riquadro di analisi in basso — lo strumento la decodifica in forma leggibile e ti mostra i prossimi cinque orari di esecuzione nel tuo fuso orario locale.

Riferimento dei campi

Minuto: 0–59. Ora: 0–23. Giorno del mese: 1–31. Mese: 1–12 (gennaio = 1). Giorno della settimana: 0–6 con domenica = 0 nel cron Unix classico — 7 è anch'esso accettato come domenica nella maggior parte dei parser moderni. Quando sia giorno del mese sia giorno della settimana sono impostati su valori diversi da *, il cron classico si attiva quando UNO dei due è soddisfatto (un OR logico), cosa che sorprende molte persone. Scegline uno solo per un comportamento prevedibile.

Domande frequenti

Corrisponde al cron di Quartz / Spring?
No — questo generatore emette il cron Unix classico a 5 campi. Quartz e Spring usano una variante a 6 o 7 campi che aggiunge un campo iniziale dei secondi e un campo finale opzionale per l'anno. La struttura è simile, quindi di solito puoi incollare questo output e anteporre 0 per ottenere una stringa compatibile con Quartz, ma token speciali come L (last) e W (weekday) sono esclusivi di Quartz e non compariranno qui.
Come calcola l'esplicatore le prossime esecuzioni?
Quando clicchi Spiega, lo strumento percorre l'espressione in avanti e mostra i prossimi cinque orari in cui sarà eseguita, nel fuso orario locale del tuo browser. L'intero calcolo avviene localmente — le tue stringhe cron non lasciano mai la pagina.
E i fusi orari?
Sia il generatore sia l'anteprima delle prossime esecuzioni trattano l'espressione come se fosse eseguita nel fuso orario locale del tuo browser. Gli schedulatori cron in produzione variano: crond di Linux usa il fuso del sistema, AWS EventBridge usa UTC come default, GitHub Actions usa UTC, Kubernetes usa il fuso del cluster. Conferma sempre il fuso orario del tuo runner prima di andare in produzione.
Come esprimo "l'ultimo giorno del mese"?
Il cron Unix classico non ha un token nativo per "ultimo giorno", quindi l'approssimazione portabile più vicina è 59 23 28-31 * *, che si attiva ogni giorno dal 28 in poi alle 23:59. Il job stesso dovrebbe controllare date -d 'tomorrow' +%-d = 1 (o l'equivalente nel tuo linguaggio) e saltare se non è effettivamente fine mese. Quartz cron supporta L a questo scopo — ma le espressioni Quartz non funzionano sul cron Linux semplice.
Posso eseguire un job ogni 90 minuti?
Non con una singola espressione cron — i passi cron si reimpostano ogni ora, quindi */90 non funziona. La soluzione più vicina sono due espressioni: 0 0,3,6,9,12,15,18,21 * * * e 30 1,4,7,10,13,16,19,22 * * *, che insieme si attivano ogni 90 minuti. Ancora più semplice: pianifica ogni 30 minuti e fai exit 0 dallo script quando non è lo slot giusto.
Perché il mio job parte due volte al cambio dell'ora legale?
Quando l'orologio va avanti, i job pianificati nell'ora mancante vengono solitamente saltati. Quando torna indietro, i job nell'ora ripetuta vengono eseguiti due volte. Per evitarlo, esegui cron in UTC (cron.timezone = 'UTC' oppure imposta TZ=UTC nel crontab) e converti all'ora locale all'interno del job — UTC non ha ora legale.