我在cPanel中有一个简单的cron作业,每2分钟运行一次:
*/2 * * * *
默认情况下,“0”分钟是cron作业的开始,如0,2,4,6,8,10等...
如何跳过cron中“0”小时(12 AM)的“0”分钟?我这样做是因为这个cron取决于另一个每天早上12点运行一次的cron。所以我不希望它们重叠。
简而言之,我需要这个cron每隔2分钟运行一次,但凌晨00点00分除外。
答案 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分钟运行一次,但是脚本本身具有逻辑,以确保在检查是否存在该锁之前它首先要做的事情。如果有锁?没做什么。如果没有锁,请坚持下去!