在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
(或任何您合适的时区文件)