crontab,安排作业在最短的时间内按顺序运行

时间:2015-03-14 12:26:21

标签: performance scheduled-tasks crontab

提供3个按顺序运行的作业

jobA  -->  jobB  -->  jobC
~20min     ~25min      ~5m

一个人应该在前一个完成时执行。个人持续时间可能会有所不同,但已知合理的持续时间。 将此过程保持在执行循环中可以使用crontab完成,但如何优化它以便尽可能快地运行序列? 工作/流程不直接沟通。

目前,我在crontab中安排了这3个作业,因此jobA从第0分钟开始,jobB在第30分钟开始,jobC在第40分钟开始。但在大多数情况下,jobB和jobC可以提前开始。

我们的想法是尽可能快地每小时运行一次此序列。

2 个答案:

答案 0 :(得分:2)

Cron用shell执行命令。这样就足以运行这样一个长命令。

jobA && jobB && jobC

仅当&&成功时,使用jobB才会运行jobA

独立安排这些工作并不能保证A在B之前完成B或C之前完成。

答案 1 :(得分:1)

一种方法 - 创建一个脚本:driver.shl:

/path/to/JobA [parameters]
if [ $? -ne 0 ]; then
   echo 'error' | mailx -s 'job JobA failed ' me@mycompany.com
/path/to/JobB [parameters]
if [ $? -ne 0 ]; then
   echo 'error' | mailx -s 'job JobB failed ' me@mycompany.com
/path/to/JobC [parameters]
if [ $? -ne 0 ]; then
   echo 'error' | mailx -s 'job JobC failed ' me@mycompany.com

安排driver.shl在crontab中每小时运行一次。