Riassunto

Questo generatore di espressioni cron trasforma una descrizione di schedule, oppure una stringa cron incollata, in un'espressione validata a 5 campi: minuto, ora, giorno del mese, mese e giorno della settimana. Scegli una schedule comune come ogni 5 minuti o weekday alle 9 AM, oppure modifica ogni campo direttamente, con supporto per range, liste e valori step. Lo strumento renderizza una descrizione in linguaggio naturale della schedule e calcola i prossimi 5 orari di esecuzione in UTC, usando la stessa logica OR per day-of-month e day-of-week che vixie-cron e Kubernetes CronJob usano, quindi quello che vedi qui corrisponde a quello che effettivamente si esegue in produzione.

Generatore di Espressioni Cron per Job Programmati e Rollout Window

Crea un'espressione cron a 5 campi da preset, oppure incolla una per controllarla. Otieni una descrizione in linguaggio naturale e i prossimi cinque orari di esecuzione prima di spedire la schedule.

Generatore di espressioni cron

Scegli campi o un preset qui sotto. L'espressione, una descrizione in linguaggio naturale, e i prossimi cinque orari di esecuzione si aggiornano mentre digiti.

0 9 * * 1-5

Sotto il cofano

Come funziona questo generatore di espressioni cron

Cinque campi, sintassi standard

Minuto, ora, giorno del mese, mese, e giorno della settimana: gli stessi campi che crontab, GitHub Actions schedule, e Kubernetes CronJob tutti leggono. Gli intervalli (9-17), le liste (1,15,30), gli step (*/5), e i caratteri jolly vengono analizzati nello stesso modo in cui lo fanno in produzione.

I campi day sono OR'd, non AND'd

Imposta il giorno del mese a 1 e il giorno della settimana a lunedì, e il job si esegue il primo del mese o su un lunedì qualsiasi, non solo quando entrambi coincidono. È così che vixie-cron e Kubernetes CronJob effettivamente lo valutano, e è il dettaglio che la maggior parte dei generatori non considera.

Prossime cinque esecuzioni, calcolate in tempo reale

Ogni modifica ricalcola cinque timestamp UTC camminando in avanti attraverso il calendario reale, quindi una schedule che non può mai essere eseguita, come il giorno 30 a febbraio, mostri vuoto qui invece di stare silenziosamente morta in una crontab.

Incolla per controllare, non solo per costruire

Hai già una stringa cron da un collega, un manifesto CronJob, o una vecchia risposta Stack Overflow? Incollalo nel campo e ottieni la stessa descrizione e gli orari di esecuzione, nessun validatore separato necessario.

Come usarlo

Dai campi vuoti a una schedule di cui ti fidi

  1. 1

    Inizia da un preset

    Scegli una schedule comune (ogni 5 minuti, weekday alle 9 AM, il 1° del mese), oppure lascia i valori predefiniti e regola da lì.

  2. 2

    Regola i campi che contano

    Usa i dropdown quick-pick o digita direttamente: liste separate da virgola, trattini per intervalli, e */N per gli step funzionano in ogni campo.

  3. 3

    Conferma prima di spedirla

    Leggi la descrizione in linguaggio naturale e controlla i prossimi cinque orari di esecuzione rispetto alla tua finestra di manutenzione o budget SLO, poi copia l'espressione nella tua crontab, CI schedule, o manifesto CronJob.

Dettaglio di implementazione

Perché i campi giorno-del-mese e giorno-della-settimana usano logica OR

POSIX/vixie-cron, l'implementazione dietro Linux crontab e Kubernetes CronJob, ha una strana regola che la maggior parte delle persone non legge mai completamente. Se entrambi i campi giorno-del-mese e giorno-della-settimana sono ristretto lontano da *, il job si esegue quando uno dei due corrisponde, non solo quando entrambi lo fanno. Imposta giorno-del-mese a 1 e giorno-della-settimana a lunedì, e la schedule si accende il primo del mese e su ogni lunedì, non solo su un lunedì che capita di essere il primo. Lascia uno dei due campi come *, e solo il campo ristretto vincola il giorno. Questo generatore segue quella convenzione perché è quello che effettivamente esegue la tua crontab, non una versione semplificata di essa. Conta di più per il tipo di schedule che un team platform scrive alle 23:00: esegui questo il primo giorno lavorativo, o il primo del mese, il che viene prima, appare come un AND per la maggior parte delle persone e si comporta come un OR in produzione.

  • POSIX/vixie-cron (Linux crontab, Kubernetes CronJob): OR una volta che uno dei due campi day è ristretto
  • Quartz cron (comune negli scheduler basati su Java): di solito richiede che uno dei due campi day rimanga come ? invece di *, evitando completamente l'ambiguità
  • Questo generatore segue la convenzione POSIX/vixie-cron, dal momento che è quello che crontab e CronJob effettivamente eseguono
Macro shot di un volto di orologio analogico con ingranaggi davanti a uno scaffale di server sfocato

Domande comuni

Questo generatore di espressioni cron è gratuito?
Sì. Si esegue interamente nel tuo browser, nessun account, nessun rate limit, e nessun dato inviato da nessuna parte tranne un beacon di page-view anonimo.
In quale fuso orario vengono mostrati gli orari di esecuzione successivi?
UTC. La maggior parte delle crontab, dei schedule di GitHub Actions, e delle risorse Kubernetes CronJob usano per impostazione predefinita UTC oppure l'orario di sistema del contenitore, quindi questo evita un errore di conversione del fuso orario. Conferma il tuo fuso orario del sistema prima di fare affidamento sul minuto esatto.
Perché il giorno-del-mese 1 e il giorno-della-settimana lunedì si eseguono entrambi, non solo quando si sovrappongono?
Perché è così che cron stesso si comporta. Le implementazioni standard di vixie-cron, incluse Linux crontab e Kubernetes CronJob, valutano questi due campi con logica OR una volta che uno di essi è ristretto da *. Questo strumento corrisponde a questo comportamento intenzionalmente.
Supporta @daily, @reboot, o altri macro di scorciatoia?
No, solo i cinque campi numerici standard, dal momento che è quello che la maggior parte degli orchestratori richiede comunque. @daily si associa a 0 0 * * *, @hourly a 0 * * * *, e @weekly a 0 0 * * 0.
Il mio schedule è inviato a un server?
No. L'analisi, la descrizione in linguaggio naturale, e il calcolo del prossimo esecuzione si eseguono tutti lato client. Niente sui campi che digiti viene trasmesso o memorizzato.
Il calcolo del prossimo esecuzione tiene conto dell'ora legale?
No, tutto è calcolato in UTC, che non ha DST. Se il sistema che esegue il tuo daemon cron usa l'orario locale con DST, controlla l'offset separatamente intorno alle date di transizione due volte all'anno.
Posso digitare nomi di mesi o giorni della settimana invece dei numeri?
Sì. jan attraverso dec e sun attraverso sat funzionano nei campi mese e giorno della settimana insieme agli intervalli numerici 1-12 e 0-6, incluso in intervalli e liste.

Il job cron si accende. Cosa vincola il deploy che innesca?

upstreamapi lega i rollout dei feature-flag a un budget SLO, quindi un deploy innescato da cron può auto-rollback prima che il pager squilli, non dopo.