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.