我正在运行以下 cron 作业
* * * * * date "+\%Y\%m\%dT\%H\%M\%S" > /path/to/log 2>&1
但它运行得太晚了,因为它写道
20210817T210001
我如何确保 cron 作业能够按整分钟运行?
答案1
这也涵盖在服务器故障。
我个人很喜欢这句话:“cron 可以保证您的任务不会早于指定时间启动。”换句话说,cron 的设计并不精确到秒。我自己的大多数 cron 任务也会在整分钟后的 01 秒甚至 02 秒启动。
为了启动 cron 作业,cron 将扫描在给定时间需要运行哪些作业。如果计划在 12:00:00 启动的作业实际上在 12:00:01 启动,这并不是错误,因为 cron 初始化的时间量可能会有所不同,具体取决于许多因素。
如果您需要某些东西在准确的一秒内“几乎”触发(感谢 Kevin),您应该寻找除 cron 之外的另一种解决方案 - 例如systemd
计时器(感谢 Andrej)、Python 脚本或甚至是为您监控时间的 C 程序。
编辑:或者(按照 Nonny Moose 的建议),您可以安排脚本提前一分钟运行,然后监视时间,以便它在您希望运行时尽可能精确地运行。