Pekerjaan Cron berjalan 1 jam, sama sekali tidak setuju dengan waktu sistem

9

Contoh masalah:

* 9 * * * echo 9
* 10 * * * echo 10

Di atas akan mengirimkan email kepada pengguna setiap menit, tetapi semua "9" tanggapan akan terjadi pada pukul 10:00 -> 10:59, sedangkan "10" akan masuk pada pukul 11:00 -> 11:59 .

Menjalankan pekerjaan

* * * * * /bin/date ; /bin/date -u

Mengembalikan tanggal dan waktu yang diharapkan (benar). ini berlaku untuk UTC dan waktu setempat (Amerika / Denver). Ubah pekerjaan ini untuk berjalan setiap menit pada jam tertentu menghasilkan offset (pekerjaan yang disuruh berjalan pada 9 dijalankan pada 10, dll, dll).

Debug saat ini saya telah menyelesaikan:

Oke, itu aneh. Mungkin file zona waktu saya entah bagaimana kacau? Mari kita periksa

diff -s /etc/localtime /usr/share/zoneinfo/`cat /etc/timezone`
Files /etc/localtime and /usr/share/zoneinfo/America/Denver are identical

Saya telah memeriksa jam perangkat keras untuk melihat apakah ini mati atau entah bagaimana tidak setuju dengan pengaturan lokal saya (jalankan sebagai root).

date ; hwclock
Wed Oct 26 10:50:13 MDT 2016
Wed 26 Oct 2016 10:50:14 AM MDT  -0.204171 seconds

Terlihat tidak aktif sedetik, tapi itu seharusnya tidak membuat pekerjaan cron saya berjalan satu jam penuh, kan?

Saya juga yakin akan hal-hal berikut:

  • Apakah zona waktu saya berubah baru-baru ini? Tidak
  • Apakah Anda sudah mencoba memperbaiki zona waktu secara manual? Iya
  • Apakah Anda menyetel ulang cron setelah memperbaiki zona waktu? Iya
  • Sudahkah saya memastikan bahwa layanan cron dihidupkan kembali? Iya
  • Sudahkah saya memulai kembali layanan cron? Iya
  • Apakah Anda benar-benar yakin bahwa cron telah dimulai kembali? 100% yakin Cron telah dimulai ulang

Informasi lain yang berpotensi relevan:

Menjalankan Debian.

cat /etc/debian_version
8.6

Kernel saat ini

uname -a
Linux BigBox 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2 (2016-04-08) x86_64 GNU/Linux

Debug yang Diperbarui:

Berlari 'hwclock --systohc', perubahan perilaku yang tidak terlihat. Jalankan perintah ini untuk memeriksa

date;hwclock
Wed Oct 26 12:39:09 MDT 2016
Wed 26 Oct 2016 12:39:11 PM MDT  -0.875328 seconds

Saya tidak dapat menjalankan 'cat / etc / sysconfig / clock' karena file ini tidak ada. Menjalankan perintah find di bawah / etc / tree untuk menemukan 'jam' mengonfirmasi bahwa saya tidak memiliki file dengan nama itu di sana.

Diperiksa untuk melihat apakah ada yang saya ketahui telah menetapkan variabel CRON_TZ. Itu tidak diatur di tingkat pengguna, atau di tingkat root. Apakah cron echo mereka tidak memberikan output.

jmurrayufo
sumber
1
Apakah CRON_TZenv var diatur di mana saja?
thrig
coba hwclock --systohchanya untuk kelengkapan, dan tambahkan cat /etc/sysconfig/clockke pertanyaan?
steve
Menambahkan kedua saran ke informasi saya, sayangnya tidak memberikan banyak nilai. CRON_TZ tidak diatur dalam lingkungan apa pun yang dapat saya lihat, menyinkronkan kembali hwclock memberikan hasil yang sama seperti sebelumnya (tetap diperiksa untuk melihat apakah itu berubah, itu tidak) dan saya tidak memiliki '/ etc / sysconfig / clock 'file.
jmurrayufo

Jawaban:

1

Satu lagi tempat untuk melihat: skrip start-at-boot cron, atau file crontab sistem sekolah lama /etc/crontab. Mungkin saja variabel lingkungan TZ diatur, katakanlah, /etc/init.d/cronieatau /lib/systemd/system/crond.service, saya tidak yakin apa yang digunakan Debian untuk sistem init.

Saya telah melihat sesuatu seperti ini ketika saya mencoba crondmenjalankan berbagai hal setiap jam:

0 */2 * * * /opt/dbms/rainstor/archiving/ama_term

crondmenjalankan skrip pada jam ganjil. Saya curiga, tetapi tidak pernah membuktikan kepada diri saya sendiri, bahwa itu ada hubungannya dengan kebingungan waktu musim panas.

Bruce Ediger
sumber
/etc/init.d/cron sedang mengambil /etc/timezonefile. TZ = cat /etc/timezone. File itu tampaknya benar (Jalankan checksum hanya untuk menggandakan yakin identik dengan apa yang seharusnya.). /lib/systemd/system/crond.service tampaknya tidak ingin mengubah variabel TZ. Saya akan memeriksa saran * / 2 untuk melihat apakah saya melihat hal yang sama.
jmurrayufo