2016-12-05 46 views
0

我试图生成一个系统,允许我检查多个作业是否已完成在群集上运行。 此bash的代码应工作要等到所有的PBS的工作已经完成:如何将PBSPRO作业存储在数组中并检查作业是否完成?

#create the array 

ALLMYJOBS=() 

# loop through scripts, submit them and store the job IDs in the array 

for i in 1 2 3 4 5 
do 
ALLMYJOBS[${i}]=$(qsub script${i}.bash) 
done  


JOBSR=true 

# check if all jobs have completed: 

while [ ${JOBSR} ];do 

    JOBSR=false 

    for m in "${ALLMYJOBS[@]}" 
    do 
     if qstat ${m} &> /dev/null; then 
     JOBSR=true 
     fi 
    done 
done 

我失去了一些东西明显?

+0

执行此操作时,结果如何? –

+0

它没有离开循环,但我发现了错误 – Filicado

回答

0

其实这个问题是与检查本身:

而[ “$ {} JOBSR”= “真”];做

这工作明显。

0

您实施的方式将继续轮询调度程序,这对于大型群集来说是不可取的。

如果我要实现,我将使用作业依赖项,根据所有作业定义另一个作业,检查上一份作业的输出或使用电子邮件通知。

相关问题