我在cPanel中有一个简单的cron作业,每2分钟运行一次:
*/2 * * * *
默认情况下,"0"分钟是cron作业的开始时间,如0,2,4,6,8,10等…
如何跳过"0"小时(12AM)的"0"分钟?我这样做是因为这个cron依赖于每天12点运行一次的另一个cron。所以我不希望它们重叠
简而言之,我需要这个cron每2分钟运行一次,除了12:00AM的00:00。
这是您的cron作业:
*/2 * * * *
但是你又说:
如何跳过"0"小时(12AM)的"0"分钟?我做这是因为这个cron依赖于另一个每天运行一次的cron在12点。所以我不希望它们重叠
问题不在于cron作业,而在于脚本逻辑。也许你可以做一些事情,比如在第一个作业中创建某种指示符,以便第二个作业可以选择,这样它们就不会冲突。
也许你应该把你的cron改成不优雅的,但每隔两分钟就具体一点,像这样:
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 * * * *
EDIT:根据原海报留下的评论:
简而言之,除了上午12点,我需要这个cron每2分钟运行一次。
如果是这种情况,您可能需要设置像这样的cron作业组合:
*/2 1-23 * * *
2-58/2 0 * * *
第一个cron条目将从1:00am到11:00pm每2
分钟运行一次作业。
下一个cron条目将只在午夜从2-58
分钟开始每2
分钟运行一次作业。由于第二个作业在午夜的0
小时内跳过0
,因此此组合应该适合您。
但也就是说,这种双入口逻辑实际上是鼓励开发人员扩展应用程序逻辑以避免某些情况下它无法工作的原因。
例如,我有一些bash脚本在标准Unix/tmp
目录中创建锁文件。它们被设置为每5分钟运行一次,但是脚本本身具有逻辑来确保在执行任何操作之前要做的第一件事是检查锁是否存在。如果锁在那里?什么也不做。如果锁不在那里,那就发疯吧!