Parser di Espressioni Cron

Formato: minuto ora giorno-del-mese mese giorno-della-settimana

Erediti un crontab ed è pieno di 0 */2 * * 1-5, 15 4 1 * *, */30 8-18 * * *. Questo parser prende un’espressione cron standard a 5 campi e restituisce una descrizione in inglese semplice (“every 2 hours on weekdays”) più i prossimi 5 orari in cui si attiverà davvero. Utile per capire le pianificazioni esistenti e verificarne una nuova prima di implementarla.

Come analizzare un'espressione cron

  1. 1

    Incolla l'espressione

    Un'espressione standard a 5 campi (`* * * * *`): minuto, ora, giorno del mese, mese e giorno della settimana.

  2. 2

    Leggi la descrizione in inglese

    Il parser riscrive ogni campo in inglese semplice, per esempio "At minute 0, every 2 hours, on day(s) of week 1-5."

  3. 3

    Controlla l'anteprima della prossima esecuzione

    5 prossimi orari di attivazione. Se non corrispondono alla tua intenzione, affina l'espressione.

  4. 4

    Correggi i campi non validi

    Le espressioni con un numero di campi errato o valori fuori intervallo vengono rifiutate con un errore che indica il campo problematico.

Decodifica di ciascun campo

Ogni campo ha il proprio intervallo valido e i propri caratteri speciali:

Campo Intervallo Caratteri jolly supportati
Minuto 0-59 * , - /
Ora 0-23 * , - /
Giorno del mese 1-31 * , - /
Mese 1-12 * , - /
Giorno della settimana 0-7 * , - /
  • * = qualsiasi valore (* nel campo dei minuti significa ogni minuto).
  • 1,5,10 = un elenco di valori.
  • 1-5 = un intervallo di valori.
  • */15 o 0-45/15 = un passo, contato dall’inizio dell’intervallo del campo.
  • Il giorno della settimana 0 e 7 sono entrambi domenica, quindi vengono accettate entrambe le convenzioni. I nomi di mesi e giorni come JAN o MON non sono accettati; usa i numeri.

Esempi decodificati

Espressione In inglese
0 */2 * * 1-5 At minute 0 every 2 hours, Monday through Friday
15 4 1 * * At 04:15 on the 1st day of every month
*/30 8-18 * * * Every 30 minutes between 08:00 and 18:59
0 0 1,15 * * At midnight on the 1st and 15th of every month
0 22 * * 0 At 22:00 every Sunday

Cosa accetta il parser

  • Esattamente 5 campi: minuto, ora, giorno del mese, mese e giorno della settimana. Le espressioni Quartz a 6 o 7 campi (con secondi o anno) vengono rifiutate.
  • Intervalli validi: ogni valore deve rientrare nel proprio campo, per esempio minuto 0-59, ora 0-23, giorno del mese 1-31, mese 1-12 e giorno della settimana 0-7.
  • Passi positivi: il valore dopo / deve essere un numero positivo (*/0 viene rifiutato).
  • Nessuna scorciatoia con nome: @daily, @reboot e scorciatoie simili non sono accettate. Espandile prima nella loro forma a 5 campi (per esempio @daily = 0 0 * * *).

Giorno del mese e giorno della settimana combinati

Quando sono impostati sia il giorno del mese sia il giorno della settimana, questo parser pianifica un’esecuzione solo quando entrambi corrispondono: 0 0 1 * MON scatta quindi solo quando il 1° è un lunedì. La maggior parte delle implementazioni cron di Linux tratta invece i due campi come OR (il lavoro gira quando uno dei due corrisponde). Controlla quindi l’espressione contro lo scheduler che usi davvero.

Nota sul fuso orario

Gli orari dell’anteprima sono calcolati con l’orologio del server, che gira in UTC. Se il tuo crontab gira su una macchina con un fuso orario diverso, gli orari mostrati qui possono differire da quelli di quella macchina.

Domande frequenti

No. Vengono accettate solo espressioni standard a 5 campi. Le espressioni Quartz con secondi (6 campi) o con anno (7 campi) vengono rifiutate con un errore.

Di solito per uno di questi motivi: l’anteprima usa l’orologio del server in UTC mentre il tuo crontab gira in un altro fuso orario; giorno del mese e giorno della settimana sono entrambi impostati (questo parser richiede che coincidano); oppure un passo che riparte all’inizio di ogni ora o giorno.

Sì, se è un’espressione standard a 5 campi, che è quello che usa Kubernetes (UTC di default). Tieni presente che l’anteprima qui usa l’orologio del server in UTC: se il cluster gira in un fuso orario diverso, gli orari possono differire.

Il cron di Linux accetta scorciatoie con nome: @reboot (all’avvio), @yearly / @annually (0 0 1 1 *), @monthly, @weekly, @daily, @hourly. Questo parser non le accetta: espandi la scorciatoia nella sua espressione equivalente a 5 campi prima di incollarla qui.

Strumenti correlati