提供3个按顺序运行的作业
jobA --> jobB --> jobC
~20min ~25min ~5m
一个人应该在前一个完成时执行。个人持续时间可能会有所不同,但已知合理的持续时间。
将此过程保持在执行循环中可以使用crontab
完成,但如何优化它以便尽可能快地运行序列?
工作/流程不直接沟通。
目前,我在crontab中安排了这3个作业,因此jobA从第0分钟开始,jobB在第30分钟开始,jobC在第40分钟开始。但在大多数情况下,jobB和jobC可以提前开始。
我们的想法是尽可能快地每小时运行一次此序列。
答案 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中每小时运行一次。