問題範例:
* 9 * * * echo 9
* 10 * * * echo 10
以上將每分鐘向使用者發送一封電子郵件,但所有「9」回應將在上午 10:00 -> 10:59 發生,而「10」將在上午 11:00 -> 11:59 出現。
運行一個作業
* * * * * /bin/date ; /bin/date -u
傳回預期(正確)的日期和時間。對於 UTC 和當地時間(美國/丹佛)都是如此。將此作業變更為在特定時間每分鐘運行一次會導致偏移(告訴在 9 點運行的作業在 10 點運行,等等)。
目前我已經完成的調試:
好吧,這很奇怪。也許我的時區文件有點混亂?讓我們檢查一下
diff -s /etc/localtime /usr/share/zoneinfo/`cat /etc/timezone`
Files /etc/localtime and /usr/share/zoneinfo/America/Denver are identical
我檢查了硬體時鐘,看看它是否已關閉或與我的本地設定(以 root 身份運行)不一致。
date ; hwclock
Wed Oct 26 10:50:13 MDT 2016
Wed 26 Oct 2016 10:50:14 AM MDT -0.204171 seconds
看起來有一秒鐘的時間,但這不應該讓我的 cron 作業比計劃運行整整一個小時,對吧?
我還確信以下幾點:
- 我的時區最近改變了嗎?不
- 您是否嘗試手動修復時區?是的
- 修復時區後重置 cron 了嗎?是的
- 我是否確定 cron 服務已重新啟動?是的
- 我是否重新啟動了 cron 服務?是的
- 您真的確定 cron 已重新啟動嗎?100% 確定 Cron 已重新啟動
其他可能相關的資訊:
運行 Debian。
cat /etc/debian_version
8.6
目前內核
uname -a
Linux BigBox 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2 (2016-04-08) x86_64 GNU/Linux
更新調試:
執行“hwclock --systohc”,行為沒有明顯變化。運行此命令來檢查
date;hwclock
Wed Oct 26 12:39:09 MDT 2016
Wed 26 Oct 2016 12:39:11 PM MDT -0.875328 seconds
我無法運行“cat /etc/sysconfig/clock”,因為該檔案不存在。在 /etc/ 樹下執行 find 指令來尋找“clock”,確認那裡沒有該名稱的檔案。
檢查我所知道的是否有任何內容設定了 CRON_TZ 變數。它不是在使用者層級設定的,也不是在根層級設定的。讓 cron 回顯它們不會給出任何輸出。
答案1
還有一個值得一看的地方: 的啟動時腳本cron
,或老式系統 crontab 檔案/etc/crontab
。 TZ 環境變數可能被設定為,/etc/init.d/cronie
或者/lib/systemd/system/crond.service
,我不確定 Debian 用於 init 系統的內容。
當我嘗試crond
每隔一小時運行一次時,我看到過這樣的事情:
0 */2 * * * /opt/dbms/rainstor/archiving/ama_term
crond
在奇數小時運行腳本。我懷疑,但從未向自己證明,這與夏令時的混亂有關。