由于夏令时,cron 作业提前一个小时运行

由于夏令时,cron 作业提前一个小时运行

CentOS 7.5.1804主机上,我遇到一个 cronjob,由于时钟回滚一小时而提前一小时运行,并且UTC 偏移量从 UTC-4 更改为 UTC-5

这运行于/etc/cron.d/*

# Runs at 1410 UTC on M-F
10 14 * * 1-5 accountchecker bash /opt/accountchecker/accountchecker.sh > /dev/null 2>&1

我希望它在东部时间 1010 MF 运行,但由于主机是 UTC,因此它尊重小时更改并现在在东部时间 910 运行。

我怎样才能让 cron 适应这种变化并始终在 1010 运行?

答案1

我只需要走另一条路——确保某些东西在一致的 UTC 时间运行。

我将 crontab 设置为在可能较早的时间运行,测试时间是否太早,如果是,则睡眠一个小时。

如果您有监视“卡住”的 cronjobs(运行时间太长)的进程,您可以制作一个包装器来测试正确的时间,然后要么不执行任何操作,要么让程序运行...然后将其放入 cron 中时间可能是正确的。

当我与 UTC 进行比较时,我可以看看date -u...您想要比较TZ=America/Los_Angeles date(或任何您合适的时区文件)

相关内容