假设我有一个像这样的 crontab:
*/30 * * * * /root/scripts/remove_log_files.sh
这将每隔 30 分钟删除一些我不需要的日志。
如果服务器在 25 分钟后关闭,而 crontab 被激活并在 10 分钟后重新启动,会发生什么情况?
更新:根据一些搜索,该职位不会被解雇。但该作业会再延迟 30 分钟还是 25 分钟才能执行呢?
无法找到一些在线讨论此问题的资源。大多数讨论是关于如何使用 crontab 关闭机器。
谢谢
答案1
传统方法cron
每分钟检查当前时间是否与其中的时间模式之一匹配,crontab
并执行每个匹配的行。根本不存在“错过的作业”或“即将运行的作业”的概念。图案
*/30 * * * *
匹配分钟可被 30 整除的时间戳(即 0 和 30)。
如果您想要“每 25 分钟系统正常运行时间运行一次”之类的内容,您需要更现代的cron
实现。
其中之一是fcron
,它添加了许多额外的方法来描述何时运行作业,包括非常有用的“不要同时运行其中两个作业”,这是传统方法cron
无法做到的。