Italiano

Strumenti per sviluppatori · Generatore di Crontab

Sintassi del passo e dell'intervallo cron: */15, 1-5, elenchi e come si combinano

· Come funziona

cron pianificazione flusso di lavoro dello sviluppatore

Segni dei minuti raggruppati in un intervallo, un elenco e una sequenza a gradini
Illustrazione vettoriale originale ToolAcre

Passaggi, intervalli ed elenchi sono la parte della sintassi cron che le persone copiano senza capire. Questo post spiega ciascuno di essi, come nidificano e sorprese come */7 che non significa "ogni sette giorni".

Ogni 15 minuti, ma solo da 9 a 5: l'espressione ingenua si attiva anche di notte

"Ogni quindici minuti durante l'orario d'ufficio" contiene due restrizioni indipendenti. Il campo dei minuti necessita dei contrassegni dei quarti d'ora, mentre il campo delle ore necessita di un intervallo limitato. Scrivere solo `*/15 * * * *` risolve il primo tempo e produce comunque corse per tutta la notte. L'espressione deve codificare entrambi i vincoli prima di dire qualcosa sui giorni feriali.

ToolAcre analizza i cinque campi della pianificazione, non un comando. Inizia con `*/15 9-17 * * 1-5`, quindi esamina la frase e l'anteprima successiva. Questo controllo rileva l'errore comune di inserire `9-17` nella posizione dei minuti o di lasciare senza restrizioni il campo del giorno della settimana. Il generatore crea e spiega un'espressione; non installa né esegue un lavoro.

Intervalli: 1-5 e 9-17 come intervalli inclusivi all'interno di un singolo campo

Un trattino crea un intervallo inclusivo all'interno di un campo. `9-17` nella posizione dell'ora si espande in nove valori: da 9 a 17. Allo stesso modo, `1-5` nella posizione del giorno della settimana si espande dal lunedì al venerdì perché questo parser mappa la domenica su 0, il lunedì su 1 e così via. Entrambi gli endpoint partecipano, quindi 17:00 rientra nell'intervallo di ore selezionato.

Gli intervalli non possono estendersi oltre il confine di un campo. Il parser rifiuta una forma all'indietro come `17-9` e suggerisce di dividere i valori desiderati in due elementi dell'elenco. Questo rifiuto è utile perché le regole di confezionamento differiscono tra i prodotti di pianificazione. Qui un intervallo si sposta sempre verso l'alto tra i valori che già soddisfano i limiti numerici o di nomi accettati del campo.

Passaggi: */15 e 9-17/2, e perché il passaggio riavvia dal limite inferiore del campo anziché contare continuamente

Una barra sceglie ogni ennesimo valore da un punto iniziale. `*/15` nel campo dei minuti inizia dal minimo, zero, e si espande in 0, 15, 30 e 45. `9-17/2` inizia alle 9 e produce 9, 11, 13, 15 e 17. Il passaggio appartiene a un campo; non conteggia i minuti trascorsi oltre i limiti orari.

Il parser accetta anche un semplice inizio con un passo. `5/15` nel campo dei minuti significa 5, 20, 35 e 50 perché il punto finale superiore implicito è 59. I passaggi devono essere numeri interi positivi e non possono superare la dimensione dell'intervallo completo del campo. Un passaggio zero, non numerico o sovradimensionato riceve un errore di convalida specifico del campo invece di un'interpretazione indovinata.

Gli elenchi possono combinare valori, intervalli e intervalli graduali in un unico campo

Le virgole uniscono più pezzi all'interno dello stesso campo. Un semplice `1,15,30` nomina valori di tre minuti. Un input più elaborato può combinare un valore solitario, un intervallo inclusivo e un intervallo graduale: il testato `0,10-20/5,59` si espande in 0, 10, 15, 20 e 59. I risultati duplicati vengono rimossi e i valori espansi vengono ordinati prima che i calcoli successivi li utilizzino.

Questa grammatica è compositiva ma ancora ristretta. Ogni elemento virgola può contenere una barra e un intervallo deve avere esattamente due punti finali non vuoti. Una virgola vagante, barre multiple o un intervallo incompleto vengono rifiutati con una motivazione che nomina il campo. Ciò rende un'espressione mista rivedibile senza pretendere che la punteggiatura malformata abbia un significato convenzionale.

Esempio realizzato: */15 9-17 * * 1-5 — enumerazione dei minuti prodotti e del caso limite 17:45

Per `*/15 9-17 * * 1-5`, i valori dei minuti sono 00, 15, 30 e 45; gli orari vanno dal 09 al 17; e i valori dei giorni feriali vanno dal lunedì al venerdì. In ciascun giorno feriale incluso il primo candidato è 09:00 e l'ultimo è 17:45. Non esiste 18:00 perché 18 è fuori dall'intervallo orario.

L’edge dell’ultima esecuzione illustra perché l’espansione del campo batte la stenografia conversazionale. "Dalle nove alle cinque" potrebbe significare fermarsi a 17:00 per un lettore e includere l'intera ora delle cinque per un altro. Il campo delle ore di Cron seleziona un intervallo di ore, quindi il campo dei minuti seleziona le posizioni al suo interno. Se 17:45 non è desiderato, il limite desiderato richiede un'espressione o una logica sul lato comando diversa.

Un passaggio del giorno del mese si espande dal giorno 1 ogni mese; non è un intervallo di settimane trascorse

`*/7` in giorno del mese si espande dal minimo di quel campo di 1, producendo 1, 8, 15, 22 e 29 dove esistono tali date. All'inizio del mese successivo, il campo inizia nuovamente da 1. Descrive quindi date di calendario selezionate, non un intervallo di sette giorni in continuo avanzamento. Febbraio e i mesi più brevi mancano semplicemente di alcune date importanti.

La stessa sintassi ha un valore iniziale diverso in un altro campo. I `*/7` minuti iniziano alle 0, mentre i `*/7` giorni del mese iniziano alle 1. Il parser di ToolAcre deriva la sequenza da ciascuna specifica di campo e la sua anteprima ricerca le date del calendario. Per una cadenza settimanale effettiva, limitare il giorno della settimana invece di considerare lo spostamento del giorno del mese come durata trascorsa.

Gli operatori non supportati vengono rifiutati anziché interpretati come un altro dialetto cron

Questo parser a cinque campi non implementa `L`, `W`, `#` o `?`. Questi caratteri non vengono eliminati silenziosamente e non vengono presentati come sintassi crontab portatile. Vengono rifiutati anche sei campi, con la spiegazione che la posizione principale aggiuntiva appartiene a uno stile di pianificazione orientato ai secondi piuttosto che al formato letto da questo percorso.

Il confine è intenzionale: minuto, ora, giorno del mese, mese e giorno della settimana sono qui la grammatica posizionale completa. Prima di spostare un'espressione da un altro scheduler, conta i suoi campi e identifica i suoi operatori. Il generatore può convalidare il proprio dialetto; non può certificare Quartz, la sintassi del calendario systemd o la variazione di un servizio cloud.

Conclusione: i passi significano "iniziare dal fondo dell'intervallo" e il generatore spiega un'espressione di passi in parole che puoi controllare

Gli intervalli definiscono un intervallo inclusivo, le virgole uniscono parti e tagliano i valori di esempio da un inizio specifico del campo. Leggere tali operazioni in quest'ordine trasforma un token denso in un insieme finito che può essere ispezionato. Spiega anche bordi come 17:45 senza fare affidamento su una frase copiata il cui autore potrebbe voler dire qualcos'altro.

Utilizza il generatore come superficie di revisione: inserisci l'espressione, leggi la descrizione, esamina gli avvertimenti e confronta i prossimi cinque turni dell'orologio da parete nella zona prevista. Quindi posiziona i cinque campi verificati accanto al comando reale nel tuo ambiente. La costruzione del programma e l'esecuzione del lavoro rimangono responsabilità separate.