![如何在 cron 作业中处理夏令时](https://linux22.com/image/1568957/%E5%A6%82%E4%BD%95%E5%9C%A8%20cron%20%E4%BD%9C%E4%B8%9A%E4%B8%AD%E5%A4%84%E7%90%86%E5%A4%8F%E4%BB%A4%E6%97%B6.png)
我在亚马逊 ec2 机器(Ubuntu 16.04)上有一个 cron 作业,应该在美国中部时间凌晨 2:00 运行。
cron 作业使用 UTC 时间进行调度。由于中部时间目前为 UTC-5(目前我们处于夏令时),因此它如下所示:
0 7 * * * /home/ubuntu/runetl.sh
因此它在 UTC 时间上午 7:00 运行,这是正确的。
但是当我们回到标准时间时,中央时间将更改为 UTC-6,因此作业将在中央时间凌晨 1:00 开始运行。这不是我想要的。我希望它们总是在凌晨 2:00 运行,无论是夏令时还是标准时间。
我怎样才能做到这一点?
答案1
运行sudo dpkg-reconfigure tzdata
并设置您需要的本地时区(而不是 UTC)。还设置并运行ntp
守护程序,它将精确同步时间,并自动逐渐平稳地在夏令时之间切换,这对于计费、电子邮件服务器等时间紧迫的任务非常重要。