Generatore di espressioni cron
Crea un'espressione cron campo per campo, leggila in parole semplici, vedi le prossime esecuzioni in ogni fuso orario e convertila per systemd o Quartz.
In parole semplici
Sono impostati sia il giorno del mese sia il giorno della settimana: il cron classico esegue quando corrisponde UNO DEI DUE (non entrambi).
Costruttore
| Campo | Modalità | Valore |
|---|---|---|
| Secondo0–59 | ||
| Minuto0–59 | ||
| Ora0–23 | ||
| Giorno del mese1–31, L | ||
| Mese1–12 o JAN–DEC | ||
| Giorno della settimana0–7 (0 e 7 = domenica) o SUN–SAT |
Prossime esecuzioni
Altri formati
- riga crontab
- systemd OnCalendar=
- Quartz / Spring
- AWS EventBridge
Come costruire un’espressione cron
- Scrivi o incolla un’espressione in Espressione cron, oppure scegline una dalle Preimpostazioni. Sono accettate anche macro come
@dailyo@weekly. - In alternativa usa il Costruttore: per ogni campo scegli una Modalità (Ogni, Ogni N, Valori specifici, Intervallo o Personalizzato) e compila il Valore. L’espressione si aggiorna man mano, e se modifichi l’espressione si aggiorna il costruttore.
- Spunta Aggiungi un campo dei secondi (6 campi) se il tuo scheduler supporta i secondi.
- Leggi la pianificazione In parole semplici (in italiano), poi controlla l’elenco delle Prossime esecuzioni, con date e orari scritti all’italiana. Scegli il Fuso orario del server che esegue il job e Quante esecuzioni elencare.
- Copia l’espressione con Copia, oppure usa uno degli Altri formati.
Gli errori vengono spiegati campo per campo, per esempio “Minuto: 61 è fuori intervallo (0–59)”, così sai esattamente cosa correggere.
I cinque campi di cron
Una riga di cron standard (Vixie) ha cinque campi, seguiti dal comando:
| Campo | Valori ammessi |
|---|---|
| Minuto | 0–59 |
| Ora | 0–23 |
| Giorno del mese | 1–31 |
| Mese | 1–12 o JAN–DEC |
| Giorno della settimana | 0–7 (0 e 7 sono la domenica) o SUN–SAT |
Ogni campo accetta * (tutti i valori), un elenco 1,15, un intervallo 9-17, un passo */15 (ogni 15 unità) o un intervallo con passo 0-30/10. Quindi */15 9-17 * * 1-5 significa ogni 15 minuti dalle 9:00 alle 17:45, dal lunedì al venerdì. I nomi di mesi e giorni restano in inglese (JAN, MON…), perché è così che li legge cron.
Una regola sorprende molti: quando sono limitati sia il Giorno del mese sia il Giorno della settimana, il cron classico esegue quando corrisponde uno dei due. 0 0 13 * 5 gira ogni giorno 13 e ogni venerdì, non solo il venerdì 13. In quel caso lo strumento mostra un avviso.
Prossime esecuzioni e fusi orari
Cron usa l’orologio della macchina, oppure l’impostazione CRON_TZ/TZ della crontab. L’elenco delle Prossime esecuzioni è calcolato per il fuso orario che scegli, compresi i cambi dell’ora legale: durante il passaggio di primavera un job impostato alle 2:30 può essere saltato, e in autunno può girare una o due volte a seconda dell’implementazione. Per i job che devono girare esattamente una volta, preferisci orari fuori dalla fascia 1:00–3:00 oppure usa UTC.
Vixie cron, timer systemd, Quartz e AWS
- I timer systemd usano
OnCalendar=con una sintassi diversa:Mon..Fri *-*-* 09..17:00/15:00. Le condizioni su giorno della settimana e data vengono combinate con AND, non con OR, quindi alcune espressioni cron non hanno un equivalente esatto. - Quartz e Spring mettono un campo dei secondi all’inizio e possono aggiungere un campo anno. Uno dei due campi del giorno deve essere
?, e Quartz numera i giorni della settimana da 1 a 7 partendo dalla domenica, a differenza dello 0–6 di cron. Lo strumento scrive i giorni come nomi (MON-FRI) per evitare questa trappola. - AWS EventBridge usa
cron(minuti ore giorno mese giorno-della-settimana anno): sei campi, niente secondi, un?in uno dei campi del giorno e l’anno alla fine.
Il cron standard non ha un campo dei secondi. La forma a 6 campi con i secondi è supportata da molte librerie (node-cron, Spring, Quartz) ma non dalla crontab di sistema.
Domande frequenti
Come eseguo un job ogni 5 minuti?
Usa */5 * * * *. Il job gira ai minuti 0, 5, 10… di ogni ora.
Come eseguo un job l'ultimo giorno del mese?
Molti scheduler accettano L nel campo del giorno del mese: 0 18 L * *. Con il Vixie cron puro, esegui ogni giorno dal 28 al 31 e verifica nello script se domani è il primo del mese.
Cosa fa @reboot?
Esegue il comando una sola volta, all’avvio del demone cron. Non ha una pianificazione, quindi lo strumento non può elencarne le esecuzioni.
Perché il mio job non parte all'orario mostrato?
Controlla il fuso orario del server, la differenza tra la crontab dell’utente e /etc/crontab (che ha un campo utente in più) e il PATH: cron parte con un ambiente minimo.
La domenica è 0 o 7?
Entrambi. Nel campo del giorno della settimana, 0 e 7 indicano la domenica, 1 è il lunedì e 6 il sabato.
Strumenti correlati
- Convertitore di timestamp Unix Converti timestamp Unix in secondi o millisecondi in date leggibili in ora locale, UTC e ISO 8601, e trasforma qualsiasi data in tempo epoch.
- Convertitore di fusi orari Converti una data e un'ora da un fuso orario a molti altri in un colpo solo, con l'ora legale gestita automaticamente. Cerca qualsiasi fuso IANA.
- Calcolatore chmod Converti i permessi dei file Unix e Linux tra caselle, notazione ottale (755) e simbolica (rwxr-xr-x), con setuid, setgid, sticky bit e comandi chmod pronti.