首先用
* * * * * date >> /root/log.log
做个测试,发现显示的是UTC的时间,但是直接执行date,得到的是CST的时间。可见在Debian里crontab的执行时间与我们date看到的还是有时差。虽然在设执行时间的时候算上时差,也能绕过这个问题,但多少有些不舒服。作为一个轻度完美主义者,在浪费了几个小时后终于在豆豆博客发现解决方法!总结如下:
Debian里设置时间由两部分组成,localtime和timezone。平时直接用tzselect设置了时区后似乎能看到的时间都是正确的,也就忽略了localtime。但实际上crontab的执行时间是受localtime决定的,所以还需要修改这个文件:
rm /etc/localtime cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
然后重启cron
service cron restart
如果一切顺利,那么前面添加计划任务已经能够输出CST的时间了。
如果还是不行,那再试试
dpkg-reconfigure tzdata