2017-09-13 8 views
0

では、qstat:スクリプト私のラッパーはジョブとして別のスクリプト-Bを提出し、私は他のジョブを提出しています内部のスクリプト-Bをループ(job1、job2..jobx)では、これらのジョブのそれぞれは、変数$ New_OSに格納されている異なるジョブ名を持っています。私はすべて(Job1、job2..jobx)が完了するまでスクリプトBをスリープ状態にしようとしています。Grepのは、私はトラブル変数</p> <p><strong>シナリオ</strong>では、qstatをgreping持ってい変数が何も返さない

スクリプト

Job_status=`qstat | grep "${New_OS}" | wc -l` 
echo -e "\n\nJob_status: $Job_status" 
while [ $Job_status -ne "0" ]; 
do 
    echo -e "Running PostProcessing for $Job_status sampleR, sleeping for 3 minutes..." 
    sleep 3m 
    Job_status=`qstat | grep "${New_OS}" | wc -l` 
done; 

問題:名$ New_OSとジョブの数を返すことになっている変数$ JOB_STATUSはジョブがまだ実行されているにもかかわらず、0を返します。

質問:qstatの$ New_OSのgrepが、名前として$ New_OSのジョブを返さないのはなぜですか?私はここで問題を理解できませんでした。私に解決策や回避策を教えてください。前もって感謝します。

+0

答えを明確にするために答えを書いてください。 –

+0

@Liam Healy今はっきりしていますか?詳細が必要な場合はお知らせください。ありがとう –

答えて

2

最後に、私のgrepで '*'を追加しました。

Job_status1=`qstat | grep ${New_OS}* | wc -l` 

正確な一致のために 'grep -w'を探しているわけではないので、 '*'がなくてもgrepが動作するはずです。誰かが似たような状況になった場合に備えて、私はそれを共有しています。ありがとう。

+0

親切にも私の解決策を試してみて、それがあなたに役立つかどうかを教えてください。 – RavinderSingh13

0

次のように使用してください。

Job_status1=$(qstat | grep -c ${New_OS}*) 

私は私のシステムでqstatを持っていないのでそう、チェックができませんでしたそれが動作するはずですが、私はそれはそれから行く方法を知ってみましょう。

+0

Ravinder、 あなたのソリューションがどのように機能するか、診断や簡単な情報を教えてください。 – nitinr708

関連する問題

 関連する問題