Crond gestisce l'ora legale +1 ora cambia?


16

Lo scorso fine settimana abbiamo dovuto cambiare l'orario dalle 02:00 alle 03:00.

Domanda: cosa accadrebbe se ci fosse un cronjob alle 02:30?

crond è una soluzione molto vecchia per la pianificazione, probabilmente dovrebbe gestirla, ma non so come.

Risposte:


18

Probabilmente dipende dalla tua implementazione cron, ma il popolare cron Vixie afferma nel manuale:

cron quindi si sveglia ogni minuto, esaminando tutti i crontab memorizzati, controllando ogni comando per vedere se dovrebbe essere eseguito nel minuto corrente.

e

Considerazioni speciali esistono quando l'orologio viene cambiato di meno di 3 ore, ad esempio all'inizio e alla fine dell'ora legale. Se il tempo si è spostato in avanti, quei lavori che sarebbero stati eseguiti nel tempo saltato verranno eseguiti subito dopo la modifica. Al contrario, se il tempo si è spostato indietro di meno di 3 ore, i lavori che rientrano nel tempo ripetuto non verranno rieseguiti.

Sono interessati solo i lavori eseguiti in un determinato momento (non specificato come @hourly, né con '*' nell'identificatore di ora o minuti). I lavori specificati con caratteri jolly vengono eseguiti immediatamente in base alla nuova ora.

Poiché la modifica dell'ora legale è stata inferiore a 3 ore, il programma verrà eseguito poco dopo le 3:00

Non sono sicuro che si tratti del comportamento specifico di Vixie cron, mi sembra di ricordare che il mio PDP-11 ha funzionato anche negli anni '80, ma non ne sono sicuro.


2
Wow, conoscenza degli anni '80 - Tanto di cappello!
Isaac,

regola empirica: una volta all'anno i tuoi croni in quell'intervallo di ore non funzioneranno. una volta all'anno i tuoi croni correranno due volte. corollario: questo non è sempre vero. correlati: smettere di usare i fusi orari locali!
tedder42

@ tedder42 si prega di fornire riferimenti, le vostre affermazioni contraddicono sia la documentazione che l'effettivo comportamento di cron.
Anthon,


Quel caso aneddotico fa riferimento alle 02:00 e alle 03:00 e non ha alcuna rilevanza per la domanda (che si riferisce alle 14:30) pm. I tuoi riferimenti potrebbero essere comportamenti (vecchi) interessanti, non in linea con la mia esperienza. E l'esecuzione di un server senza fuso orario ha i suoi problemi.
Anthon,

2

La soluzione migliore è far funzionare il tuo computer con l'orologio hardware impostato su UTC, (Coordinated Universal Time), AKA GMT o Zulu Time e cambiare il modo in cui l'ora viene visualizzata impostando il fuso orario locale per consentire l'ora legale tempo di prendere il controllo.

Su SUSE Linux, e probabilmente sulla maggior parte degli altri, se l'Hardware Clock System -> Ambiente -> Clock -> HWCLOCK è impostato su UTC con il flag -u allora e il tuo fuso orario è impostato su dove ti trovi il sistema visualizzerà automaticamente le ore locali con correzioni dell'ora legale per te.

Questo ha una serie di vantaggi:

  • Non dovrai mai più regolare manualmente l'orologio per le modifiche dell'ora legale
  • Le schede CRON verranno archiviate ed eseguite in orari UTC
  • Se un file, ad esempio un registro, viene scritto alle 01:30 prima della fine dell'ora legale e un altro alle 01:20 dopo la fine dell'ora legale, quel file sarà ancora "Più recente" dell'altro perché i timestamp del file saranno UTC e appena tradotto per la visualizzazione in base al fuso orario corrente al momento della visualizzazione.

Per ulteriori informazioni digitare man hwclockin un terminale.


2
Un piccolo pignolo. UTC non è "Costante di tempo universale". UTC significa Coordinated Universal Time
fpmurphy
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.