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.
CRON_TZ
env var diatur di mana saja?hwclock --systohc
hanya untuk kelengkapan, dan tambahkancat /etc/sysconfig/clock
ke pertanyaan?Jawaban:
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/cronie
atau/lib/systemd/system/crond.service
, saya tidak yakin apa yang digunakan Debian untuk sistem init.Saya telah melihat sesuatu seperti ini ketika saya mencoba
crond
menjalankan berbagai hal setiap jam:crond
menjalankan skrip pada jam ganjil. Saya curiga, tetapi tidak pernah membuktikan kepada diri saya sendiri, bahwa itu ada hubungannya dengan kebingungan waktu musim panas.sumber
/etc/timezone
file. 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.