Cron 作業運行 1 小時,與系統時間完全不一致

Cron 作業運行 1 小時,與系統時間完全不一致

問題範例:

* 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在奇數小時運行腳本。我懷疑,但從未向自己證明,這與夏令時的混亂有關。

相關內容