除了第一分钟以外每2分钟运行一次cron作业" 0"第一个小时" 0"

时间:2014-05-24 15:52:44

标签: php cron

我在cPanel中有一个简单的cron作业,每2分钟运行一次:

*/2 * * * *

默认情况下,“0”分钟是cron作业的开始,如0,2,4,6,8,10等...

如何跳过cron中“0”小时(12 AM)的“0”分钟?我这样做是因为这个cron取决于另一个每天早上12点运行一次的cron。所以我不希望它们重叠。

简而言之,我需要这个cron每隔2分钟运行一次,但凌晨00点00分除外。

1 个答案:

答案 0 :(得分:14)

这是你的cron工作:

*/2 * * * *

但是你说:

  

如何跳过" 0" " 0"分钟小时(上午12点)在cron?我做   这是因为这个cron取决于每天运行一次的另一个cron   上午12点。所以我不希望它们重叠。

问题不是cron作业,而是你的脚本逻辑。也许你可以做一些事情,比如在第一份工作中创建某种指标,第二份工作就可以了,这样就不会发生冲突。

也许你应该把你的cron变成不优雅的,但每2分钟的具体情况如下:

2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58 * * * *

一个概念是将间隔(2-58)与频率(*/2)结合起来,但不清楚这是否可行。

2-58/2 * * * *

编辑:根据原始海报留下的评论:

  

简而言之,除了上午12点,我需要每2分钟运行一次这个cron。

如果是这种情况,您可能需要设置这样的cron作业组合:

*/2 1-23 * * *
2-58/2 0 * * *

第一个cron条目将在凌晨1:00到晚上11:00每隔2分钟运行一次。

下一个cron条目将在2分钟后2-58分钟仅在午夜运行该作业。由于第二份作业在午夜0小时内跳过0,因此这个组合应该适合您。

但是,这就是说,这种双重入口逻辑是为什么实际上鼓励开发人员扩展他们的app逻辑以避免某些情况不起作用。

例如,我有一些bash脚本在标准的Unix /tmp目录中创建锁文件。它们被设置为每5分钟运行一次,但是脚本本身具有逻辑,以确保在检查是否存在该锁之前它首先要做的事情。如果有锁?没做什么。如果没有锁,请坚持下去!