Analizzatore e generatore di espressioni cron
Leggi espressioni cron di Unix, Spring, Quartz e AWS, visualizza le prossime esecuzioni in qualsiasi fuso orario o costruisci un’espressione campo per campo.
Pianificazione
Dettaglio dei campi
| Campo | Espressione | Valori |
|---|
Prossime esecuzioni
Generatore visivo
Scegli come si ripete ogni campo. «Valori specifici» accetta un elenco come 1,15 o MON,WED; «Intervallo» un da-a come 9-17; «Ogni N» il passo.
Caratteri speciali
| * | Ogni valore del campo. |
| , | Elenco di valori, ad es. 1,15,30. |
| - | Intervallo, ad es. 9-17 o MON-FRI. |
| / | Passo, ad es. */15 = ogni 15; 5/15 = da 5 ogni 15 (non nel cron di Unix). |
| ? | Nessun valore specifico. Quartz e AWS lo richiedono nel giorno del mese o nel giorno della settimana. |
| L | Ultimo: L nel giorno del mese = ultimo giorno; L-3 = tre giorni prima; 5L nel giorno della settimana = ultimo giovedì (numerazione Quartz). |
| W | Giorno feriale più vicino: 15W = il giorno feriale più vicino al 15; LW = ultimo giorno feriale del mese. |
| # | N-esimo giorno della settimana del mese: 6#3 = terzo venerdì in Quartz/AWS (1 = domenica); 5#3 in Spring (0 = domenica). |
| @daily … | Macro: @yearly, @monthly, @weekly, @daily, @hourly; @reboot viene eseguito una volta all’avvio. |
Come si usa
- Digita o incolla una pianificazione in «Espressione cron», oppure fai clic su uno degli esempi, che imposta anche il «Formato» su «Rilevamento automatico». Il riepilogo e le esecuzioni si aggiornano mentre scrivi.
- Lascia il «Formato» su «Rilevamento automatico» o seleziona il sistema per cui è scritta l’espressione. Il rilevamento automatico interpreta 5 campi come Unix e 7 come Quartz. Con 6 campi sceglie AWS o Quartz in base alla posizione di «?», sceglie AWS quando l’ultimo campo contiene un anno dal 1970 al 2199, e altrimenti presume Spring. Le macro come @weekly vengono lette come Unix. Quando l’espressione è valida, la riga di stato indica il formato usato.
- Leggi «Pianificazione» e «Dettaglio dei campi» per vedere a che cosa corrisponde ogni campo, poi controlla le date in «Prossime esecuzioni». «Fuso orario» parte dal fuso del tuo browser; selezionane un altro se serve e scegli 5, 10 o 20 in «Esecuzioni da mostrare». Per i fusi diversi da UTC, ogni esecuzione mostra anche l’ora UTC.
- Per costruire invece un’espressione, apri «Generatore visivo», seleziona un formato e scegli come si ripete ogni campo, inserendo un valore dove il campo lo richiede. «Usa questa espressione» copia l’«Espressione generata» in «Espressione cron», imposta il «Formato» su quello del generatore e la analizza, così puoi controllare le esecuzioni.
Domande frequenti
L’espressione che inserisco viene inviata da qualche parte?
No. L’espressione viene analizzata e le esecuzioni vengono calcolate nel browser con JavaScript; l’espressione non viene caricata su LeedyBox.
Perché 0 0 13 * 5 viene eseguito ogni venerdì e non solo venerdì 13?
Nel cron di Unix, quando sono limitati sia il giorno del mese sia il giorno della settimana (nessuno dei due inizia con *), un giorno corrisponde se corrisponde uno dei due campi, quindi questa espressione viene eseguita il 13 di ogni mese e ogni venerdì. Lo strumento applica questa regola alle espressioni Unix, e «Pianificazione» indica allora «basta uno dei due». Per le espressioni Spring richiede che corrispondano entrambi i campi, mentre Quartz e AWS evitano il problema richiedendo «?» in uno dei due campi. Nel cron di Unix, una soluzione comune è pianificare il job ogni venerdì e controllare la data all’interno del job.
La domenica è 0, 1 o 7?
Dipende dal formato. Nelle espressioni Unix e Spring, sia 0 sia 7 indicano la domenica e 1 è il lunedì; in Quartz e AWS, 1 è la domenica e 7 il sabato, quindi lì 1-5 significa da domenica a giovedì. I nomi dei giorni come MON-FRI evitano questa differenza in Spring, Quartz e AWS.
Perché la mia riga di crontab o la mia espressione cron( ) di AWS viene rifiutata?
Inserisci solo i campi della pianificazione. Il comando alla fine di una riga di crontab, e il nome utente in /etc/crontab, vengono contati come campi in più, quindi lo strumento segnala un campo non valido o un numero di campi sbagliato. Per AWS, incolla solo i sei campi contenuti tra le parentesi di cron( ), senza cron( ) attorno.
Come riscrivo un’espressione Unix per Spring, Quartz o AWS?
Spring aggiunge un campo dei secondi all’inizio, quindi 0 9 * * 1-5 diventa 0 0 9 * * 1-5. Quartz richiede anche «?» in uno dei campi del giorno e numera la domenica come 1, quindi la stessa pianificazione diventa 0 0 9 ? * MON-FRI. AWS non ha il campo dei secondi, richiede «?» in uno dei campi del giorno come Quartz e aggiunge un anno alla fine: 0 9 ? * MON-FRI *. Se l’espressione Unix limita entrambi i campi del giorno, si basa sulla regola «basta uno dei due» descritta sopra, che questi formati non usano, quindi di solito servono due pianificazioni. Controlla il risultato con il formato di destinazione selezionato e confronta le prossime esecuzioni.
Perché lo strumento dice che non è stata trovata alcuna esecuzione?
L’espressione è valida, ma nei circa 8 anni successivi in cui lo strumento cerca non è stato trovato alcun orario corrispondente. Le cause tipiche sono date inesistenti, come 0 0 30 2 * (30 febbraio) o il giorno 31 combinato solo con mesi di 30 giorni, e un campo anno che indica un anno passato. Un anno che cade oltre gli 8 anni successivi dà lo stesso messaggio, anche se quella pianificazione può comunque essere eseguita più avanti. Alcuni scheduler, compreso il classico cron di Unix, accettano una data inesistente senza avvisi, e il job non viene eseguito.
Quale fuso orario viene usato, e che cosa succede con l’ora legale?
Le esecuzioni vengono calcolate per il fuso selezionato in «Fuso orario». Scegli quello usato dal tuo scheduler: crontab di solito segue il fuso orario del server, le regole pianificate di AWS EventBridge usano UTC ed EventBridge Scheduler permette di impostare un fuso orario. Il menu offre il fuso del tuo browser, UTC e una selezione di fusi comuni; se il fuso del tuo scheduler non c’è, scegline uno con lo stesso scarto da UTC e le stesse date di inizio e fine dell’ora legale. Un’esecuzione in un orario saltato quando gli orologi vanno avanti viene esclusa dall’elenco, mentre un orario che si presenta due volte quando tornano indietro viene elencato una sola volta. I demoni cron gestiscono queste ore in modi diversi; cronie, per esempio, può eseguire un job previsto in un’ora saltata subito dopo il cambio. Verifica il comportamento del tuo scheduler oppure usa UTC, che non ha l’ora legale.