防止cronjobs重叠

时间:2012-12-17 02:30:50

标签: linux cron queue crontab spool

我是linux命令行和shell脚本的新手,所以请光临我。

我在crontab中设置了3个不同的作业(称为jobA,jobB,jobC),这些作业以不同的时间间隔运行,并在白天的不同时间开始。例如,jobA每小时运行一次,每小时5分钟,jobB每小时运行9分钟,每小时运行39分钟,jobC每15分钟运行一次。它们并不依赖于彼此,但由于各种原因它们不能同时运行。

问题在于,有时其中一个作业需要很长时间才能运行而另一个作业在第一个作业完成之前就会启动,从而导致出现问题。

是否有某种方法可以排队或假脱机这些作业,以便在当前运行的作业完成之前不会启动?我尝试使用this solution,但这并不能保证挂起的作业将按照它们应该启动的顺序恢复。队列是最好的,但我找不到任何关于如何做到这一点。

请帮忙!

1 个答案:

答案 0 :(得分:1)

使用cron无法做到这一点。 Cron用于在特定时间运行特定命令。您可以通过您提出的解决方案来实现,但这会增加更多的复杂性。

我建议用java等高级语言编写/编写需求,并使用mutil-thread程序来实现您的需求。

Control-m是另一种调度软件,还有许多其他功能。您可以将上述用例集成到其中。