Generatore di espressioni cron — Crea e spiega pianificazioni cron

Crea una pianificazione cron con i menu a tendina o incollane una, leggila in parole semplici e vedi le prossime 10 esecuzioni nel tuo fuso orario e in UTC. Gratis, nel browser.

minuto · ora · giorno del mese · mese · giorno della settimana. Sono accettati i nomi (JAN, MON), le macro come @daily e un'intera riga di crontab incollata.

«Alle ore 09:00, ogni giorno della settimana da lunedì a venerdì.»
minuto
ora
giorno del mese
mese
giorno della settimana

Usa un intervallo o un passo (1-5); modificalo nella casella dell'espressione, oppure scegli dei valori qui sotto per sostituirlo.

Prossime 10 esecuzioni
La pianificazione viene eseguita in:
…

Cron interpreta la pianificazione nel fuso orario della macchina su cui gira. Scegli “UTC” per GitHub Actions, Vercel, la maggior parte dei runner di CI e degli scheduler cloud; entrambe le colonne mostrano gli stessi istanti.

Incolla l'output di crontab -l. I commenti e le righe VAR=valore vengono ignorati.

Esecuzione ogni 5 minuti.
/usr/local/bin/healthcheck.sh
Alle ore 02:30.
/usr/local/bin/backup.sh --full
Alle ore 09:00, ogni giorno della settimana da lunedì a venerdì.
php /var/www/artisan reports:send
Alle ore 00:00, ogni domenica.
certbot renew --quiet
Esempi cron comuni (clic per caricare)
Interroga un'API o una coda ogni 10 minuti
Ogni 6 ore (00:00, 06:00, 12:00, 18:00)
Backup notturno alle 02:30
Ogni ora in orario d'ufficio, nei giorni feriali
Ogni 30 minuti in orario d'ufficio
Ogni settimana, domenica a mezzanotte (come @weekly)
Due volte al mese: il 1° e il 15 alle 08:00
Ultimi giorni del mese (nello script controlla che domani sia il 1°)
Finestra di manutenzione del sabato alle 03:00
Ogni trimestre, alle 04:15 del 1° di gennaio, aprile, luglio e ottobre
Venerdì OPPURE il 13 (la regola OR in azione)
Macro: una volta al giorno a mezzanotte

Funziona interamente nel tuo browser. Nulla di ciò che inserisci viene inviato a noi o salvato. Sfoglia tutti gli strumenti gratuiti.

Hai trovato un problema o qualcosa che potrebbe andare meglio? Leggiamo ogni messaggio e sistemiamo le cose in fretta.

Questo generatore di espressioni cron gratuito crea una pianificazione cron a cinque campi con i menu a tendina e rilegge qualsiasi espressione in parole semplici, con le prossime dieci esecuzioni elencate nel tuo fuso orario e in UTC. Incolla un'espressione, una riga di crontab o un intero crontab e ogni pianificazione viene spiegata. Comprende la sintassi standard condivisa da crontab, GitHub Actions, Kubernetes CronJob, Vercel cron e dalla maggior parte degli scheduler: asterischi, elenchi, intervalli, passi, nomi di mesi e giorni della settimana e le macro come @daily.

La sintassi cron è compatta e non perdona: “0 0 1 * *” e “0 0 * * 1” si somigliano, ma significano il primo di ogni mese e ogni lunedì. Vedere la pianificazione a parole e come date concrete fa la differenza tra un job che gira alle 9:00 nei giorni feriali e uno che gira alle 09:00 UTC di domenica, che è proprio l'errore che questa pagina vuole evitare. Il calcolatore segue esattamente Vixie cron, compresa la sua stranezza per cui un campo del giorno che inizia con un asterisco cambia il modo in cui si combinano i due campi del giorno. Non accetta la sintassi Quartz (un campo dei secondi, L, W, #) e lo segnala quando la incolli.

Come si usa

  1. Parti da un preset o da un esempio, oppure digita o incolla un'espressione (una riga di crontab completa viene ridotta alla sola pianificazione). La descrizione e le prossime esecuzioni si aggiornano mentre modifichi.
  2. Usa i cinque editor dei campi per impostare minuto, ora, giorno del mese, mese e giorno della settimana: ogni, ogni N o valori specifici.
  3. Controlla le prossime dieci esecuzioni. Scegli “UTC” se il job girerà su un server o su un runner di CI, che quasi sempre usano UTC; ogni esecuzione è mostrata sia nel tuo fuso orario sia in UTC.
  4. Per verificare un server esistente, incolla l'output di crontab -l in “Spiega un intero crontab”.
  5. Copia l'espressione, oppure copia una riga di crontab completa con la descrizione come commento.
  6. Incollala in crontab -e, in un blocco schedule: di GitHub Actions, nella specifica di un Kubernetes CronJob o nelle impostazioni cron della tua piattaforma.

Domande frequenti

Cosa significano i cinque campi?

Nell'ordine: minuto (0–59), ora (0–23), giorno del mese (1–31), mese (1–12 o JAN–DEC), giorno della settimana (0–7 o SUN–SAT, dove sia 0 sia 7 indicano la domenica). Un asterisco indica ogni valore; 1-5 è un intervallo; 1,15 è un elenco; */10 significa un valore ogni dieci.

Cosa succede se sono impostati sia il giorno del mese sia il giorno della settimana?

Il cron standard (Vixie) esegue il job quando corrisponde uno dei due, non entrambi. “0 0 13 * FRI” viene eseguito il 13 di ogni mese e ogni venerdì, non solo venerdì 13. Questa pagina segue questa regola. Una sottigliezza: se uno dei due campi del giorno inizia con un asterisco (ad esempio */2), Vixie cron lo considera senza restrizioni e richiede che corrispondano entrambi, quindi “0 0 */2 * 1” indica i giorni dispari che cadono di lunedì. Quartz si comporta diversamente e usa ? per indicare il campo non usato.

Quale fuso orario usa cron?

Quello della macchina o del servizio che lo esegue. I server personali di solito usano l'ora locale; i runner cloud, GitHub Actions, Vercel e la maggior parte dei cluster Kubernetes usano UTC. Un job impostato alle 9:00 su un runner UTC parte alle 5:00 a Toronto d'estate e alle 4:00 d'inverno. La tabella delle esecuzioni mostra ogni orario sia nel tuo fuso orario sia in UTC, così lo scarto è visibile.

Supporta i secondi o le estensioni L, W e #?

No. La sintassi a sei campi (con i secondi) e le estensioni L (ultimo), W (giorno feriale) e # (n-esimo giorno della settimana) appartengono a Quartz e ad alcuni scheduler aziendali, non al cron standard, e la maggior parte delle piattaforme le rifiuta. Se ti serve “l'ultimo venerdì del mese”, l'approccio portabile è un job che gira ogni venerdì e controlla la data da sé.

Perché il mio job non parte mai?

Cause comuni: la pianificazione è valida ma impossibile (31 aprile, 30 febbraio); il server è in un fuso orario diverso da quello che pensavi; la riga del crontab non ha un comando o il PATH del comando è diverso da quello della tua shell; oppure l'intervallo è più breve della durata del job stesso e le istanze si accumulano. L'elenco delle prossime esecuzioni qui individua i primi due casi.

Riferimento della sintassi cron

• * ogni valore · 5 esattamente 5 · 1-5 intervallo · 1,3,5 elenco · */15 un valore ogni 15 · 1-30/5 un valore ogni 5 da 1 a 30

• Nomi: JAN–DEC per i mesi, SUN–SAT per i giorni della settimana (senza distinzione tra maiuscole e minuscole); funzionano anche intervalli di nomi (MON-FRI).

• @hourly (0 * * * *), @daily o @midnight (0 0 * * *), @weekly (0 0 * * 0), @monthly (0 0 1 * *), @yearly o @annually (0 0 1 1 *); @reboot viene eseguito una volta all'avvio. Crontab li accetta, ma non tutte le piattaforme; la forma a cinque campi è quella portabile.

• I giorni della settimana 0 e 7 indicano entrambi la domenica. Gli intervalli non ricominciano da capo: FRI-MON è un errore; scrivi FRI-SAT,SUN-MON o 5,6,0,1.

• I campi sono separati da spazi; in un crontab il comando segue sulla stessa riga.

Dove si inseriscono le pianificazioni cron

Linux e macOS: crontab -e, un job per riga, prima l'espressione e poi il comando. GitHub Actions: on: schedule: - cron: '0 9 * * 1-5', sempre in UTC, e nei momenti di traffico intenso le esecuzioni possono ritardare di diversi minuti. Kubernetes: il campo schedule di un CronJob. Vercel: crons in vercel.json con un path e una schedule, in UTC. Gli scheduler cloud (AWS EventBridge, Google Cloud Scheduler) accettano la stessa sintassi con piccole differenze di dialetto, ed EventBridge aggiunge un campo per l'anno.

Come vengono calcolate le prossime esecuzioni

Il calcolatore avanza di un giorno di calendario alla volta a partire da adesso. Per ogni giorno controlla il mese, poi i campi giorno del mese e giorno della settimana con la regola di Vixie (OR quando entrambi hanno restrizioni, AND quando uno dei due inizia con *), e solo allora elenca le ore e i minuti corrispondenti. Le esecuzioni che non sono strettamente successive al minuto corrente vengono saltate, quindi un job previsto proprio in questo minuto viene mostrato alla sua occorrenza successiva.

Nel tuo fuso orario conta l'ora legale. Un orario che non esiste il giorno in cui gli orologi vanno avanti (le 02:30 in gran parte del Nord America) viene saltato, e un orario che si presenta due volte quando gli orologi tornano indietro viene eseguito una sola volta. È così che cronie gestisce i job a orario fisso; altri demoni possono comportarsi diversamente, ed è un motivo in più per cui i server di solito eseguono cron in UTC.

Una pianificazione che indica una data impossibile (30 febbraio, 31 aprile) non parte mai e la pagina lo segnala. Una pianificazione per il 29 febbraio parte solo negli anni bisestili; la ricerca guarda avanti di nove anni, abbastanza per qualsiasi pianificazione reale.

Strumenti gratuiti correlati

  • Tester regex — Prova un'espressione regolare su un testo di esempio con evidenziazione delle corrispondenze in tempo reale, gruppi di cattura e anteprima della sostituzione. Gratis, nel browser.
  • Formattatore JSON — Formatta, minifica e valida JSON, con gli errori di parsing localizzati per riga e colonna. Nel tuo browser, senza upload.
  • Convertitore di unità — Converti tra tutte le unità più comuni (metriche e imperiali, cucina, dati, pressione, energia, velocità, consumo di carburante) all'istante, nel browser.