Generatore di espressioni cron
Espressione
Campi
Preimpostazioni
Prossime 5 esecuzioni
- mer 23/09/2026, 14:00
- mer 23/09/2026, 14:01
- mer 23/09/2026, 14:02
- mer 23/09/2026, 14:03
- mer 23/09/2026, 14:04
Come funziona
Scrivi un'espressione cron nel campo in alto, oppure modifica i cinque campi uno per uno nella sezione Campi: l'espressione si aggiorna mentre scrivi. Ogni campo accetta i valori numerici e gli operatori abbreviati (* qualsiasi valore, */N ogni N, 1-5 intervallo, 1,3,5 elenco). Lo strumento mostra subito una descrizione in italiano (per `*/15 9-17 * * 1-5` legge “Ogni 15 minuti, nelle ore 9–17, di lunedì–venerdì”) e le prossime cinque esecuzioni con data e ora nel fuso orario del tuo dispositivo. Se l'espressione non è valida, un messaggio indica il campo e il problema, per esempio “Ora: 24 è fuori intervallo (0–23)”.
Un'espressione cron ha esattamente 5 campi separati da spazi. È lo stesso formato di crontab su Unix, dei CronJob di Kubernetes, di `schedule` in GitHub Actions, di GitLab CI e di quasi tutti gli scheduler che incontrerai:
┌──────── minuto (0–59) │ ┌────── ora (0–23) │ │ ┌──── giorno del mese (1–31) │ │ │ ┌── mese (1–12) │ │ │ │ ┌ giorno della settimana (0–6, domenica = 0) │ │ │ │ │ * * * * *
Qualche espressione da sapere a memoria: • `0 * * * *`: al minuto 0 di ogni ora • `0 0 * * *`: ogni giorno a mezzanotte • `*/15 * * * *`: ogni 15 minuti • `0 9 * * 1-5`: alle 9:00 dal lunedì al venerdì (giorni lavorativi) • `0 0 1 * *`: il primo di ogni mese a mezzanotte • `0 2 * * 0`: la domenica alle 2:00 (tipico per i backup settimanali)
La sezione Preimpostazioni carica con un clic le pianificazioni più comuni (ogni minuto, ogni 5 minuti, ogni ora, ogni giorno a mezzanotte o a mezzogiorno, ogni lunedì, il 1° del mese, il 1° gennaio), così non devi ricordare la sintassi esatta. Le prossime esecuzioni vengono calcolate scorrendo in avanti minuto per minuto da adesso, fino a trovarne cinque o fino a un anno di distanza.
Una trappola da conoscere: quando sono limitati sia il giorno del mese sia il giorno della settimana (nessuno dei due è *), il cron standard esegue il job se corrisponde uno dei due, non entrambi. Quindi `0 0 15 * 1` parte il 15 di ogni mese e anche ogni lunedì. L'anteprima delle prossime esecuzioni di questo strumento invece mostra solo i momenti in cui corrispondono entrambi, quindi in quel caso lascia uno dei due campi su * per avere una sola condizione.
Domande frequenti
Che formato cron usa?
- Il formato crontab Unix standard a 5 campi: minuto, ora, giorno del mese, mese, giorno della settimana. Accetta gli operatori * (qualsiasi), */N (ogni N), intervalli come 1-5, elenchi come 1,3,5 e combinazioni come */2,15-20. È lo stesso formato di crontab, dei CronJob di Kubernetes, di GitHub Actions, di GitLab CI e di AWS EventBridge.
Come scrivo un cron ogni 5 minuti?
- Con `*/5 * * * *`: */5 nel campo dei minuti vuol dire ogni minuto divisibile per 5 (0, 5, 10 e così via), e gli altri quattro campi su * valgono per ogni ora e ogni giorno. È anche una delle preimpostazioni: clicca Ogni 5 minuti e l'espressione compare nel campo in alto.
Sono supportati i secondi?
- No, lo strumento lavora con 5 campi. Il cron a 6 campi (con una colonna iniziale per i secondi) è un'estensione di Quartz e Spring usata dagli scheduler Java. Se stai scrivendo un @Scheduled di Spring o un job Quartz, aggiungi tu lo 0 dei secondi davanti all'espressione.
Come vengono calcolate le prossime esecuzioni?
- Lo strumento parte dal minuto successivo a adesso e avanza un minuto alla volta, controllando ogni campo, finché non trova cinque momenti che corrispondono o arriva a circa un anno. Date e ore sono nel fuso orario locale del tuo browser: per vederle in UTC cambia il fuso orario del sistema operativo e ricarica la pagina.
Che differenza c'è tra 0 0 * * 1-5 e */5 9-17 * * 1-5?
- La prima parte a mezzanotte dal lunedì al venerdì (cinque volte a settimana). La seconda parte ogni 5 minuti dalle 9:00 alle 17:55, dal lunedì al venerdì (540 volte a settimana). Leggi sempre la descrizione sotto l'espressione prima di mandarla in produzione: la maggior parte degli errori si vede lì.
Perché il mio cron parte più spesso del previsto?
- Quasi sempre è la regola dell'OR: quando sono limitati sia il giorno del mese sia il giorno della settimana, il cron standard esegue il job se corrisponde uno dei due. `0 0 15 * 1` vuol dire “a mezzanotte del 15 oppure a mezzanotte di ogni lunedì”, non “solo i lunedì che cadono il 15”. Lascia uno dei due campi su * per avere una sola condizione.
Funziona per Kubernetes CronJob, GitHub Actions e GitLab CI?
- Sì, tutti e tre usano il formato standard a 5 campi. Una cosa da controllare: GitHub Actions ragiona in UTC, ovunque tu sia, quindi “0 9 * * *” in un workflow parte alle 9:00 UTC, cioè alle 10:00 o alle 11:00 in Italia a seconda dell'ora legale.
Come faccio un cron che parte l'ultimo giorno del mese?
- Con il cron standard a 5 campi non si può in una sola espressione, perché non esiste l'operatore “L” (last), che è un'estensione di Quartz e Spring. La soluzione classica è eseguire il job il 28, 29, 30 e 31 con uno script che controlla `[ "$(date -d tomorrow +%d)" -eq 1 ] && esegui-il-job`. Con Quartz o Spring (`@Scheduled`) puoi scrivere direttamente `0 0 0 L * ?`.
0 */2 * * * è uguale a 0 0,2,4,6,8,10,12,14,16,18,20,22 * * *?
- Sì, sono identiche: entrambe partono ogni due ore al minuto 0. `*/2` è la forma breve di “un valore ogni 2 partendo da 0”. Per partire da un'ora dispari (ogni 2 ore a partire dall'1:00) ti serve l'elenco esplicito `0 1,3,5,7,9,11,13,15,17,19,21,23 * * *`, perché */2 parte sempre da 0.
Posso usare i nomi di mesi e giorni invece dei numeri?
- In molti scheduler sì: JAN-DEC per i mesi e SUN-SAT per i giorni, senza distinzione tra maiuscole e minuscole, quindi `0 9 * * MON-FRI` equivale a `0 9 * * 1-5`. Questo editor però accetta solo cifre e gli operatori * - / , quindi qui scrivi `0 9 * * 1-5`. La forma numerica è comunque la più sicura tra piattaforme diverse.
L'espressione cron viene inviata da qualche parte?
- No. Validazione, descrizione e calcolo delle prossime esecuzioni girano in JavaScript nella scheda del browser. Nella scheda Rete degli strumenti per sviluppatori non parte nessuna richiesta, e non viene salvato niente.
Espressioni cron comuni: esempi pronti
Le pianificazioni che scrivi più spesso, da copiare e incollare. Sono tutte nel formato crontab standard a 5 campi: minuto ora giorno-del-mese mese giorno-della-settimana.
| Espressione | Quando parte | Uso tipico |
|---|---|---|
| * * * * * | Ogni minuto | Verificare che lo scheduler funzioni |
| */5 * * * * | Ogni 5 minuti | Polling frequente, monitoraggio |
| */15 * * * * | Ogni 15 minuti | Riscaldamento della cache, raccolta metriche |
| 0 * * * * | Ogni ora allo scoccare | Riepiloghi orari, rotazione dei log |
| 30 * * * * | Ogni ora alla mezza | Sfalsare i job per evitare i picchi all'ora esatta |
| 0 */2 * * * | Ogni 2 ore | Job batch a media frequenza |
| 0 9 * * * | Ogni giorno alle 09:00 | Report del mattino, email di riepilogo |
| 0 0 * * * | Ogni giorno a mezzanotte | Aggregazioni di fine giornata, rotazione dei log |
| 0 2 * * * | Ogni giorno alle 02:00 | Backup (fascia a basso traffico) |
| 0 9 * * 1-5 | Alle 9:00 dal lunedì al venerdì | Notifiche nei giorni lavorativi, promemoria dello standup |
| 0 9 * * 1 | Lunedì alle 09:00 | Report settimanale del lunedì mattina |
| 0 2 * * 0 | Domenica alle 02:00 | Backup e pulizie settimanali |
| 0 0 1 * * | Il primo del mese alle 00:00 | Fatturazione e archiviazione mensili |
| 0 0 1 1 * | 1° gennaio alle 00:00 (ogni anno) | Reset annuale, report di fine anno |
| 0 0 1 */3 * | Ogni 3 mesi, il giorno 1 | Job trimestrale |
| @hourly | All'inizio di ogni ora | Scorciatoia per `0 * * * *` (non supportata da tutti gli scheduler) |
| @daily | Ogni giorno a mezzanotte | Scorciatoia per `0 0 * * *` |
| @weekly | Domenica alle 00:00 | Scorciatoia per `0 0 * * 0` |
| @monthly | Il primo del mese alle 00:00 | Scorciatoia per `0 0 1 * *` |
| @yearly | 1° gennaio alle 00:00 | Scorciatoia per `0 0 1 1 *` |
| @reboot | All'avvio dello scheduler | Una volta a ogni avvio del demone cron (solo cron Unix) |
Il formato standard a 5 campi è definito dal crontab POSIX. Le scorciatoie con la @ (@hourly, @daily e così via) sono un'estensione di Vixie cron supportata dalla maggior parte dei cron Unix e da node-cron, ma NON dai CronJob di Kubernetes, da GitHub Actions, da AWS EventBridge o da Quartz. Questo editor accetta solo la forma a 5 campi, che è anche la più portabile.