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

Mic*_*uel 6 php cron

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

*/2 * * * *
Run Code Online (Sandbox Code Playgroud)

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

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

简而言之,我需要这个cron每隔2分钟运行一次,除了凌晨00:00 00:00.

Jak*_*uld 14

这是你的cron工作:

*/2 * * * *
Run Code Online (Sandbox Code Playgroud)

但是你说:

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

问题不是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 * * * *
Run Code Online (Sandbox Code Playgroud)

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

2-58/2 * * * *
Run Code Online (Sandbox Code Playgroud)

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

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

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

*/2 1-23 * * *
2-58/2 0 * * *
Run Code Online (Sandbox Code Playgroud)

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

下一个cron条目将每2分钟运行一次工作,从2-58几分钟只在午夜开始.由于第二份工作00午夜时分跳过,这个组合应该对你有用.

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

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