Redhat

cron 任務觸發了 8 次而不是一次。夏令時問題?

  • April 3, 2013

我們正在執行一個 Redhat 伺服器 (2.6.33.3-85.fc13.x86_64),並且在我們的 cron 設置中遇到了一些奇怪的行為。我們正在執行開箱即用的 cron 安裝。

我們有一項任務每天凌晨 2 點執行,並且已經成功完成了好幾個月。但是昨天(2011 年 3 月 27 日)早上 8 個任務實例已啟動。

這是我們的 cron 日誌文件的相關部分:

...
Mar 27 02:00:01 fs1 CROND[19557]: (root) CMD (true && /home/youdev/you_server/NEW_FS1/housekeeping_scripts/copy_pdf_printer_files_to_fs2.sh)
Mar 27 02:00:01 fs1 CROND[19563]: (youdev) CMD (true && /home/youdev/you_server/NEW_FS1/backup_scripts/fetch_db_data.sh)
Mar 27 02:00:02 fs1 CROND[19597]: (youdev) CMD (true && /home/youdev/you_server/NEW_FS1/backup_scripts/fetch_db_data.sh)
Mar 27 02:00:12 fs1 CROND[19931]: (youdev) CMD (true && /home/youdev/you_server/NEW_FS1/backup_scripts/fetch_db_data.sh)
Mar 27 02:00:22 fs1 CROND[20060]: (youdev) CMD (true && /home/youdev/you_server/NEW_FS1/backup_scripts/fetch_db_data.sh)
Mar 27 02:00:32 fs1 CROND[20067]: (youdev) CMD (true && /home/youdev/you_server/NEW_FS1/backup_scripts/fetch_db_data.sh)
Mar 27 02:00:42 fs1 CROND[20077]: (youdev) CMD (true && /home/youdev/you_server/NEW_FS1/backup_scripts/fetch_db_data.sh)
Mar 27 02:00:52 fs1 CROND[20084]: (youdev) CMD (true && /home/youdev/you_server/NEW_FS1/backup_scripts/fetch_db_data.sh)
Mar 27 02:01:02 fs1 CROND[20094]: (youdev) CMD (true && /home/youdev/you_server/NEW_FS1/backup_scripts/fetch_db_data.sh)
Mar 27 02:01:02 fs1 CROND[20095]: (root) CMD (run-parts /etc/cron.hourly)
Mar 27 02:01:02 fs1 CROND[20096]: (root) CMD (true && /home/youdev/you_server/NEW_FS1/housekeeping_scripts/copy_pdf_printer_files_to_fs2.sh)
Mar 27 02:01:02 fs1 run-parts(/etc/cron.hourly)[20095]: starting 0anacron
...

每個 fetch_db_data.sh 腳本都正確啟動(它們只是一個呼叫 rsync 的 shell 腳本 - 並且 rsync tmp 文件與成功進行 rsync 的文件一樣存在)。

這是我們唯一從 02:00 開始的作業,但我們有一個在分鐘內執行的作業 (copy_pdf_printer_files_to_fs2.sh),而且它在 02:00 只正確執行了一次。

我們能想到的唯一可能導致它的是夏令時問題(我們在英國,所以在當天 02:00 從格林威治標準時間到英國夏令時) - 但是我們所做的所有探勘都表明cron 可以很好地處理夏令時問題。即便如此,我們不應該期望 0 次執行(因為時間從 00:59 跳過到 02:00)而不是 8 次?

這是 crontab 條目:

MAILTO=XXX@XXX.YYY

# BACKUP LATEST DB FROM LIVE (takes approx one hour)
0 2 * * * true && /home/youdev/you_server/NEW_FS1/backup_scripts/fetch_db_data.sh

非常感謝您閱讀本文以及任何幫助和建議,

克里斯。

我會使用奧卡姆剃刀。這必然是夏令時時鐘的變化。

請參閱 Daniël van Eeden對Cron job 執行多次夏令時問題的回答

這是一個已知的錯誤:

http://bugs.centos.org/view.php?id=5590

https://bugzilla.redhat.com/show_bug.cgi?id=436694

我在 3 月 31 日(CET -> CEST)看到它發生在 CentOS 6.2 上,cronie-1.4.4-7.el6.x86_64

引用自:https://serverfault.com/questions/252752