在不同时区运行的 cron 和 date 命令显示不同的时区

sha*_*uec 9 centos cron

我有 CentOS,当我date在 shell 中运行命令时,它会返回如下内容:

格林威治标准时间 2011 年 4 月 28 日星期四 14:08:20

但是 cron 作业在 PST 时间运行。如果我指定

15 7 * * * 命令

它将在 7 PST 而不是 7 GMT 运行。请告诉我为什么会这样。

谢谢

hwclock 命令的输出:

/usr/sbin/hwclock --utc无法通过任何已知方法访问硬件时钟。
使用 --debug 选项查看我们搜索访问方法的详细信息。

当我使用 debug:
/usr/sbin/hwclock --debughwclock from util-linux-2.13-pre7 hwclock: Open of /dev/rtc failed, errno=2: No such file or directory 运行时。找不到可用的时钟接口。无法通过任何已知方法访问硬件时钟

小智 9

很可能不是你的问题,但值得一提——如果你的 /etc/localtime 在 crond 加载后发生变化,它将继续停留在前一个时区。只需重新启动/重新加载 crond,它就会接受这个更改。

另一个“问题”是 cron 将遵守 TZ 环境变量。这可以在 crontab 中内嵌设置,影响跟随它的任何行,但似乎更有可能在加载 crond 的环境中设置 TZ。

我只是尝试了以下几个变体(调整 hr/min 字段)以确定是否/何时运行这两个作业。填充到 /tmp/tzout.localtime 的输出还应该给你一些关于 $TZ 是否以某种方式在加载 crond 的环境中设置的提示。

* * * * *     echo $TZ `date` >> /tmp/tzout.localtime
TZ=GMT
* * * * *     echo $TZ `date` >> /tmp/tzout.gmt
Run Code Online (Sandbox Code Playgroud)

虽然我并没有声称确切知道您的问题出在哪里,但希望这对解决方案有所帮助!


小智 6

问题有点老了,但更改时区并让 crond 识别更改仍然是 CentOS 上的问题:我发现更改时区后,系统日志守护进程也必须使用重新启动

/etc/init.d/rsyslog

请参阅仅对日志文件不正确的 Timzone?


The*_*Wiz 0

我相信“cron”基于硬件时钟运行,而不是配置的时区时钟。尝试查看“hwclock”而不是“date”,因为“date”已修改为用户配置的时区。