今天发现一台新的服务器( ubuntu 18.04 )的计划任务异常,但非常有规律,就是所有任务都比预设时间晚了 8 个小时执行。自然而言猜测是时区设置问题。
奇怪的是date -R
里显示的时区是上海+8 时区,符合预期。有人说这是因为用户 bash 环境设置了TZ
环境变量,而计划任务并不会初始化 bash 环境导致的。但我们并没有设置过TZ
变量,echo $TZ
的结果是空。
然后检查了/etc/localtime
和/etc/timezone
两个文件,发现前者显示CST+8
时区,但后者里面是UTC
时区,不符合预期。但为什么date -R
能得到争取的时区,但cronjob
却不能,却不得而知。
最后修改方式:
sudo dpkg-reconfigure tzdata
这时候date -R
和more /etc/localtime
和more /etc/timezone
都显示正确的时区了。
设置时区之后,最好手工重启cron
服务:
sudo /etc/init.d/cron restart
Q. E. D.