cron 作业触发了 8 次而不是一次。夏令时问题?

cron 作业触发了 8 次而不是一次。夏令时问题?

我们正在运行 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 从 GMT 改为 BST)——然而,我们所做的所有调查都表明 cron 可以很好地处理夏令时问题。即便如此,我们难道不应该预期运行 0 次(因为时间从 00:59 跳到了 02:00)而不是 8 次吗?

以下是 crontab 条目:

[email protected]

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

非常感谢您阅读本文以及提供的任何帮助和建议,

克里斯。

答案1

我会用奥卡姆剃刀来解决这个问题。这肯定是夏令时时钟的变化。

答案2

请参阅 Daniël van Eeden回答质疑Cron 作业执行多次夏令时

这是一个已知的错误:

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 看到过这种情况

相关内容