Mengapa cronjobs berjalan pada waktu yang salah?

10

Saya memiliki pengaturan cronjobs untuk dijalankan setiap hari di server Ubuntu saya.

misalnya. 0 4 * * * perintah

Mereka berlari kecuali mereka berlari 8 jam lebih awal. Saat mengatur server, ini awalnya diatur ke waktu UTC. Saya berlari sudo dpkg-reconfigure tzdatauntuk mengatur server ke CST yang 6 jam di belakang UTC. Menariknya, saya di PST yang berada 8 jam di belakang UTC tetapi saya tidak melihat bagaimana server bisa tahu itu.

Jika saya menjalankan perintah date, ini menunjukkan waktu dalam CST.

Pasti ada tempat yang waktunya salah dikonfigurasi. Di mana saya bisa mencari untuk menyelesaikan ini?

Matt McCormick
sumber

Jawaban:

21

Apakah Anda ingat untuk memulai ulang cron setelah mengubah zona waktu Anda? Jika tidak, cron mungkin masih memiliki gagasan lama tentang zona waktu sejak awal mulanya.

Meskipun tidak sepenuhnya diperlukan, saya biasanya menyarankan untuk me-reboot mesin setelah mengubah zona waktu - Zona waktu server seharusnya tidak pernah berubah (atau setidaknya itu harus SANGAT jarang), dan ini menjamin bahwa setiap program di server telah dihidupkan ulang dan tahu tentang perubahan :-)

voretaq7
sumber
Tidak, saya tidak memulai ulang. Saya telah melakukan itu dan akan menunggu untuk melihat apakah itu masalahnya (yang saya pikir mungkin demikian).
Matt McCormick
Setelah restart layanan cron, sekarang dijalankan pada waktu yang sama dengan zona waktu yang telah saya atur menggunakan tzdata. Terima kasih.
Donny Kurnia
1
Saya perhatikan entri di / var / log / cron menunjukkan waktu yang salah, bahkan setelah restart crond. Restart rsyslog memperbaiki masalah itu.
zymhan
@WildVelociraptor Ya syslog juga akan menggunakan data zona waktu lama hingga dimulai ulang (jadi itu akan mencatat waktu hal-hal yang salah meskipun mereka berjalan pada waktu yang tepat). Hal lain yang sudah berjalan lama dan dimulai sebelum data zona waktu berubah akan menunjukkan perilaku yang sama, itulah sebabnya mengapa reboot biasanya ditunjukkan.
voretaq7
7

Bagi saya, saya menemukan bahwa ketika saya menjalankan hwclockperintah waktu berbeda satu jam dari ketika saya menjalankan dateperintah. Untuk memperbaikinya Anda dapat memanggil hwclock --systohcyang akan menyinkronkan dua kali dan menjalankan cronjobs pada waktu yang diharapkan.

sedikit
sumber
Dalam kasus saya baik datedan hwclockmelaporkan waktu yang sama, tetapi cron masih tidak melakukan apa yang saya harapkan.
unfa
Anda menyelamatkan hidup saya, terima kasih banyak hwclock --systohc memperbaiki tanggal yang salah untuk saya =)
Marcus J.Kennedy