Strumenti per sviluppatori · Generatore di Crontab
Cron e ora legale: perché un processo 02:30 può saltare o essere eseguito due volte
· Perché è importante
cron fusi orari ora legale
Due volte all'anno l'orologio salta e un lavoro cron programmato nell'intervallo o nella sovrapposizione si comporta in modo imprevisto. Questo post spiega cosa fanno i cron derivati da Vixie, cosa fanno gli altri e come pianificarli.
Un candidato per l'anteprima mancante può verificarsi quando la zona selezionata non ha tale orario
L'orario giornaliero dell'orologio può essere assente in una data in cui il fuso orario selezionato sposta avanti i suoi orologi. ToolAcre rappresenta questo caso non restituendo alcun istante per il minuto locale inesistente e saltandolo nell'elenco di esecuzione successiva. L'espressione rimane valida; un candidato del calendario semplicemente non può essere convertito in un istante reale in quella zona.
Questo comportamento è implementato in `wallClockToEpoch`, che converte la data e l'ora locale proposte, formatta nuovamente il risultato nella stessa zona e confronta ogni componente. Una mancata corrispondenza restituisce null. `nextRuns` ignora i candidati nulli e continua la ricerca, impedendo che un orario inventato nelle vicinanze venga visualizzato come se corrispondesse esattamente alla pianificazione.
I due eventi: la primavera in avanti che allontana un'ora e la caduta all'indietro che ne ripete una
I cambiamenti dell'orologio creano due casi concettuali: un divario in avanti con orari che non si verificano mai e una sovrapposizione all'indietro in cui alcune etichette si verificano più di una volta. Il repository dispone di test per mantenere un'ora locale giornaliera durante un cambiamento in avanti e per omettere un'ora primaverile inesistente. Non contiene una suite completa di test sulle politiche di sovrapposizione.
Questo limite di evidenza è importante perché le implementazioni dello scheduler possono fare scelte distinte. Questo articolo descrive l'algoritmo di anteprima del browser, non il comportamento universale del daemon. Prima di fare affidamento su un'attività ricorrente durante una transizione dell'orologio, leggere e testare lo scheduler effettivo sull'host di destinazione anziché promuovere un'anteprima in una promessa di esecuzione.
ToolAcre omette orari locali inesistenti; non modella ogni policy del demone derivata da Vixie
La cartella di lavoro affermava che particolari demoni derivati da Vixie eseguivano i lavori saltati dopo un salto e sopprimevano i duplicati. ToolAcre non fa nessuna delle due cose nel suo codice di anteprima: omette un candidato i cui componenti locali non possono andare avanti e indietro. Non viene richiamato alcun pacchetto demone e non viene modellata alcuna politica di recupero. Tali affermazioni operative vengono quindi corrette anziché ripetute.
L'esempio testato di Londra cerca 01:30 intorno alla modifica 2026 di marzo. Poiché il minuto locale non esiste nella data di transizione, i giorni restituiti sono le seguenti date valide. Ciò dimostra il comportamento dell’elenco proprio della rotta. Non stabilisce cosa fa un processo cron installato separatamente con una riga già salvata.
Il comportamento di pianificazione dei caratteri jolly nei demoni esterni è al di fuori delle prove del repository
Le stelle vengono espanse in ogni valore consentito dal parser, ma la successiva conversione dell'orologio da parete decide comunque se una particolare data-ora corrisponde a un istante. ToolAcre non dispone di una regola separata per il demone esterno per i "lavori con caratteri jolly". Tutti i candidati viaggiano attraverso la stessa ricerca di calendario e codice di conversione di zona.
Le descrizioni rimangono puramente grammaticali: `* * * * *` si legge come ogni minuto, mentre un campo dei minuti a gradini riceve la dicitura dei passi. La frase non racconta la politica di transizione. Utilizza l'elenco di esecuzione successiva per gli esempi calcolati dello strumento e non dedurre una garanzia di recupero, riprovazione o eliminazione dei duplicati solo dalla prosa.
Altre implementazioni non vengono dedotte da questa anteprima del browser
L'implementazione della zona si basa sui dati `Intl.DateTimeFormat` esposti dal browser o dal runtime del nodo. ToolAcre convalida un nome di zona IANA fornito, offre l'elenco supportato dal motore quando disponibile e include UTC. Non controlla BusyBox, gli orchestratori di contenitori o i prodotti cloud cron.
Quando un altro scheduler non è d'accordo, trattalo come una questione di dialetto e runtime. Registrane la versione, la configurazione della zona e il comportamento di transizione osservato. L'anteprima del browser è ancora utile come confronto trasparente, ma il suo codice non può rispondere a quale politica applica un altro servizio o se quel servizio ritenta il lavoro mancato.
Esempio pratico: scegli un wall time e ispeziona i candidati calcolati di ToolAcre
Un metodo più sicuro consiste nel selezionare la zona di distribuzione, inserire l'espressione giornaliera proposta e controllare le date intorno alla prossima transizione nota a quell'ambiente. Se un candidato richiesto è assente, scegli un altro wall time o una policy di pianificazione che la destinazione documenti esplicitamente. Eseguire nuovamente l'anteprima dopo aver modificato l'ora.
La fonte include una preimpostazione su 02:30, ma una preimpostazione è un esempio, non un consiglio universale. La sua validità dipende dal calendario e dalla zona selezionati. La finestra di cinque risultati di ToolAcre potrebbe non coprire una transizione distante, quindi scegli un contesto iniziale adatto nei test quando controlli il comportamento di implementazione.
La selezione della zona fa parte di questa anteprima e viene discussa qui solo come comportamento dello strumento
A differenza della separazione della cartella di lavoro, la gestione delle zone fa direttamente parte dell'anteprima di questo strumento. Il pannello chiede "Mostra prossime esecuzioni in" e avverte che la macchina che esegue cron potrebbe utilizzare una zona diversa dal lettore. La scelta di una zona modifica gli istanti risultanti preservando i campi dell'orologio da parete dell'espressione.
La selezione configura solo il calcolo del browser. Non scrive una direttiva sul fuso orario, non aggiorna un server né incorpora la scelta nell'espressione copiata. Conserva la zona prevista nella documentazione di distribuzione adiacente, quindi configura lo scheduler effettivo attraverso meccanismi collaudati per quell'ambiente.
Da asporto: anteprima nella zona prevista senza considerare l'elenco come una garanzia di esecuzione
Un elenco di esecuzione successiva è un modello di output da cinque campi, un istante di inizio, l'aritmetica del calendario e i dati della zona del browser. È utile per rilevare orari inesistenti e spostamenti orari accidentali. Non rimane né una traccia del demone né la prova che un comando sia stato eseguito.
Utilizza l'anteprima per identificare i tempi limite rischiosi, quindi verifica lo scheduler di destinazione al confine della transizione. La promessa difendibile di ToolAcre è ristretta: i lavori giornalieri rimangono nell'ora locale selezionata quando quell'ora esiste e i candidati locali inesistenti vengono omessi. Tutto il resto appartiene al sistema implementato.