欢迎光临
我们一直在努力

ubuntu操作系统crontab未按照本地时间执行任务 执行时间与系统时间不一致问题解决

今天在一台国外服务器上发现一个问题:cron执行任务未按照预期的时间执行。查看任务日志,发现相差了8个小时,正好是与中国时区的差异。

服务器上之前已经设置了使用北京时间:ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime,为何cron执行任务时还是按照UTC时间执行呢?

上网查了一下,原来是设置本地时间前cron已经在运行了,因此按照默认的UTC时间调度执行任务。

问题的解决办法也很简单,重启cron服务即可
/etc/init.d/cron restart

systemctl restart cron

PS:如果是CentOS系统,服务名为crond,因此重启命令为:systemctl restart crond

cron的配置文件称为“crontab”,是“cron table”的简写。

cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。
 

service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
service crond status //查看服务状态

事情是这样的在自己的服务上有一条如下crontab

22 0 * * * root echo 'xxx' >> zzz

熟悉的人都知道是 晚上00:22执行,把xxx输出到zzz文件

可是问题来了 这条crontab不在00:22执行!而是在中午12:22执行。

crontab 执行时间和系统时间不一致!!!!

我记得服务器更改过时区现在也是 CST时区 没理由不执行啊!

试着google下crontab 时区,还真搜到 几个类似的例子

原来 修改过时间后必须手动重启crontab

/etc/init.d/crond restart

必须重启crontab 重启服务器是没有用的,我修改时区后重启过服务器 都是没有用的,必须重启crontab!

还有一种情况的 时区分两个 一个是 timezone 还有个是localtime,按照下面命令即可解决

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
service crond restart

参考资料:
crontab 执行时间与系统时间不一致问题解决_心有猛虎细嗅蔷薇-CSDN博客:https://blog.csdn.net/yanxilou/article/details/103005829
https://serverfault.com/questions/264331/cron-running-at-different-timezone-and-date-command-shows-different-time-zone
https://tlanyan.me/percent-sign-in-crontab/

赞(0)
未经允许不得转载:飘云 » ubuntu操作系统crontab未按照本地时间执行任务 执行时间与系统时间不一致问题解决
分享到: 更多 (0)