![安排不发生频率冲突的 Cron 任务](https://linux22.com/image/1293687/%E5%AE%89%E6%8E%92%E4%B8%8D%E5%8F%91%E7%94%9F%E9%A2%91%E7%8E%87%E5%86%B2%E7%AA%81%E7%9A%84%20Cron%20%E4%BB%BB%E5%8A%A1.png)
如果我运行了几个 cron 作业:
- 每一分钟
- 每 5 分钟
- 每 15 分钟
- 每隔一小时
- 在午夜
然后,在凌晨 00:00 时,我有 5 个作业同时运行。
我想添加另一项工作,我只需要“每天运行一次”——无论何时!事实上,我希望“何时”是在服务器负载最少的时候。
我怎样才能做到这一点?
答案1
其中一种方法是这样的:
- 每小时调用一次预期脚本。
- 第一次运行脚本时,检查名为 的临时文件
.runTime
。 - 如果存在此类文件
- 解析它并从中获取24小时格式的时间。
- 如果当前小时等于解析的时间
- 删除
.runTime
文件并执行目标脚本
- 删除
- 如果是不同的时间——中止执行
- 如果没有这样的文件并且小时为 0(午夜)
- 计算 0 到 23 之间的随机小时并将其写入文件