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在奇数小时运行脚本。我怀疑,但从未向自己证明,这与夏令时的混乱有关。

相关内容