2016-12-05 23 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 

私は明らかに何かが足りないのですか? [ "$ {JOBSR}" = "真"]ながら

;これは明らかに動作します

の操作を行います。

+0

これを実行すると結果はどうなりますか? –

+0

それはループを離れることはありませんでしたが、間違いを発見しました – Filicado

答えて

0

は、実際に問題がチェック自体していました。

0

あなたの実装がスケジューラをポーリングし続ける方法は、大きなクラスタでは望ましくありません。

実装する場合は、ジョブの依存関係を使用し、すべてのジョブに応じて別のジョブを定義し、最後のジョブの出力を確認するか、電子メール通知を使用します。

関連する問題