我总共有 9 个 cron 作业,每个作业需要在 2:15 小时的时间窗口内以 15 分钟的间隔运行一次。例如从午夜开始:
第一周期
0:00 - Cron 1
0:15 - Cron 2
0:30 - Cron 3
0:45 - Cron 4
1:00 - Cron 5
1:15 - Cron 6
1:30 - Cron 7
1:45 - Cron 8
2:00 - Cron 9
第二周期
2:15 - Cron 1
2:30 - Cron 2
2:45 - Cron 3
3:00 - Cron 4
3:15 - Cron 5
3:30 - Cron 6
3:45 - Cron 7
4:00 - Cron 8
4:15 - Cron 9
第三周期
4:30 - Cron 1
4:45 - Cron 2
5:00 - Cron 3
5:15 - Cron 4
5:30 - Cron 5
5:45 - Cron 6
6:00 - Cron 7
6:15 - Cron 8
6:30 - Cron 9
等等。我该如何设置间隔?
答案1
Cron 任务是基于时间的,并且适合定期执行。如果间隔不固定(此处为 135 分钟),我猜你只能这样定义 cron:
0 0 * * * /your/cron1
15 0 * * * /your/cron2
30 0 * * * /your/cron3
45 0 * * * /your/cron4
...
0 6 * * * /your/cron7
15 6 * * * /your/cron8
30 6 * * * /your/cron9
...等等。
另一种方法是使用类似这篇文章。
答案2
这是拥有大量 cron 计划的替代方法,根据使用情况,它可能会更加灵活。
我有一些任务需要定期运行,除了一天中的某些时段。这可以通过制定一个常规的 cron 计划来实现,以预设的间隔运行任务,例如每 5 分钟或 10 分钟一次。然后,对于我不想运行任务的每个时间段,有两个计划,一个在该时间段开始时,一个在该时间段结束时。第一个计划创建一个标志文件,第二个计划删除它。要运行的任务会检查该标志文件是否存在,如果存在,则直接退出。显然,如果更合适,可以应用相反的方法。