cron的时区问题


11

与服务器时间相比,我的cron作业是一小时后计算的。我不明白发生了什么。

我的配置如下:

服务器时间:

Europe/Paris

在/ etc / default / cron中,我添加了以下行:

TZ="Europe/Paris"

尽管如此,cron作业比服务器时间晚一小时启动。真正棘手的是,如果我要求cron播放指令“ date”,它将给出服务器日期(一个好的日期!)。

我不知道如何解决这个问题; 我一直在论坛上阅读一些内容,但没有发现任何有趣的内容。

你怎么看 ?


4
因此,计划在UTC安排cron作业。Vixie cron手册页说:“守护程序将使用/ etc / timezone中的定义(如果存在)。” 里面有什么/etc/timezone?您是否/etc/timezonecron开始修改该流程?你试过了/etc/init.d/cron restart吗?
基思·汤普森

3
/ etc / timezone最近已修改,没有重新启动/etc/init.d/cron。我将尝试重新启动它。
Guillaume Lebourgeois 2012年

Answers:


16

(复制我的评论作为答案,因为事实证明这是解决方案;我猜对了。)

因此,计划在UTC中安排cron作业(与UTC的时间Europe/Paris间隔为一小时)。

Vixie cron手册页说:

守护程序将使用/ etc / timezone中的时区定义(如果存在)。

里面有什么/etc/timezone?您是否已修改/etc/timezone了比Cron进程更早的版本?你有没有尝试过

/etc/init.d/cron restart


3

一些发行版(例如Fedora)提供了一种机制,您可以在其中设置CRON_TZ=以覆盖默认时区。

从Fedora man 5 crontab

CRON_TZ变量指定特定于cron表的时区。用户应在表中输入根据指定时区的时间。写入日志文件所用的时间是从运行守护程序的本地时区获取的。

像这样:

#m  h           d   m   wday    command
CRON_TZ="Europe/Paris"
5   0,6,12,18   *   *   *       /path/to/script.bash

1

维基百科说

大多数cron实现仅在运行cron守护程序本身的系统时区设置中解释crontab条目。如果大型多用户计算机在多个时区中都有用户,这可能会引起争议,尤其是在系统默认时区包括可能令人困惑的DST时。因此,cron实现可以对用户crontab中的任何“ TZ =”环境变量设置行进行特殊处理,以解释相对于该时区的后续crontab条目

那么,也许您的登录ID的TZ设置与系统的TZ设置不同?


1

重新启动cron是我所需要的,但对我来说,命令是

/etc/init.d/crond restart (crond not cron)

0

刚刚在Ubuntu 14/16上弄清楚了这一点。为我完美地工作。

步骤(暗含sudo):

  1. cat /etc/timezone
  2. rm -fv /etc/localtime
  3. ln -s /usr/share/zoneinfo/Asia/Kolkata /etc/localtime
  4. apt install -y --reinstall tzdata
  5. /etc/init.d/rsyslog restart
  6. tail -f /var/log/syslog
  7. cat /etc/timezone

在哪里cron重新启动?
DavidPostill

我不需要重启cron。
Varun Chandak
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.