Perché i cronjob sono in esecuzione al momento sbagliato?


10

Ho installato cronjobs da eseguire quotidianamente sul mio server Ubuntu.

per esempio. 0 4 * * * comando

Stanno funzionando tranne che stanno funzionando con 8 ore di anticipo. Durante l'impostazione del server, era originariamente impostato sull'ora UTC. Ho corso sudo dpkg-reconfigure tzdataper impostare il server su CST che è 6 ore indietro rispetto a UTC. È interessante notare che sono in PST che è 8 ore indietro rispetto a UTC ma non vedo come il server possa saperlo.

Se eseguo il comando date, mostra l'ora in CST.

Ci deve essere un posto in cui l'ora è configurata in modo errato. Dove posso cercare di risolvere questo?

Risposte:


21

Ti sei ricordato di riavviare cron dopo aver cambiato il fuso orario? In caso contrario, cron potrebbe ancora avere la sua vecchia nozione del fuso orario da quando è stato originariamente avviato.

Anche se non strettamente necessario, di solito suggerisco di riavviare una macchina dopo aver cambiato il fuso orario - Il fuso orario di un server non dovrebbe mai cambiare (o almeno dovrebbe essere MOLTO raro), e questo garantisce che ogni programma sul server sia stato riavviato e sa del cambiamento :-)


No, non ho riavviato. L'ho fatto e aspetterò di vedere se questo è il problema (che penso possa essere).
Matt McCormick,

Dopo aver riavviato il servizio cron, ora viene eseguito allo stesso tempo con il fuso orario che ho impostato utilizzando tzdata. Grazie.
Donny Kurnia,

1
Ho notato che le voci in / var / log / cron mostravano l'ora sbagliata anche dopo aver riavviato crond. Il riavvio di rsyslog ha risolto il problema.
zymhan,

@WildVelociraptor Sì, syslog utilizzerà anche i vecchi dati del fuso orario fino a quando non viene riavviato (quindi indicherà le cose in modo errato anche se sono in esecuzione al momento giusto). Qualsiasi altra cosa di lunga durata e avviata prima della modifica dei dati del fuso orario mostrerà un comportamento simile, motivo per cui viene generalmente indicato un riavvio.
voretaq7,

7

Per quanto mi riguarda, ho scoperto che quando eseguivo il hwclockcomando l'ora era un'ora diversa rispetto a quando eseguivo il datecomando. Per risolvere il problema, puoi chiamare hwclock --systohcche sincronizzerà le due volte ed eseguirà i cronjobs al momento previsto.


Nel mio caso entrambi datee hwclockriportare l'ora identica, ma cron non fa ancora quello che mi aspetto.
unfa

Mi salvi la vita, grazie mille hwclock --systohc fissa la data sbagliata per me =)
Marcus J.Kennedy
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.