参考博客:debian两个时区设置,定时任务状态查看,调度任务时区初始化。
最近需要在TPU上执行定时任务,设置好时间后crontab未执行,最后查到原因,是因为时区问题。
尝试1:
Debian里设置时间由两部分组成,localtime和timezone。平时直接用tzselect设置了时区后似乎能看到的时间都是正确的,也就忽略了localtime。但实际上crontab的执行时间是受localtime决定的。
首先查看了一下localtime和timezone下边时区是否一致,然后改为一致的时区:
cat /etc/localtime
cat /usr/share/zoneinfo/Asia/Shanghai
# 时区改为一致
sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
改完后重启crontab服务并查看crontab状态:
/etc/init.d/cron restart
/etc/init.d/cron status
改完后crontab时区与date显示的时区一致,但是程序调用依然报错,参考第三个博客修改后问题解决。
在初始化的时候指定上海时区:
scheduler = BlockingScheduler(timezone="Asia/Shanghai")