12

のようなものを使用してジョブを送信するとしbsub pwdます。次のジョブの依存関係を構築するために、そのジョブのジョブ ID を取得したいと思います。bsub を取得してジョブ ID を返す方法はありますか?

4

5 に答える 5

8

参考までに、これは私がこれまでに思いついた最善の解決策です。これは、bsub が ID を含む行を STDOUT に書き込むという事実を利用しています。

function nk_jobid {
    output=$($*)
    echo $output | head -n1 | cut -d'<' -f2 | cut -d'>' -f1
}

使用法:

jobid=$(nk_jobid bsub pwd)
于 2012-08-23T14:41:52.680 に答える
8

Nils と Andrey は、それぞれシェル環境と C/C++ 環境で、この特定の質問に対する回答を持っています。依存関係を構築する目的で、ジョブに -J を付けて名前を付け、ジョブ名に基づいて依存関係を構築することもできます。

bsub -J "job1" <cmd1>
bsub -J "job2" <cmd2>
bsub -w "done(job1) && done(job2)" <cmd>

ここにもう少し情報があります。

これはジョブ配列でも機能します。

bsub -J "ArrayA[1-10]" <cmd1>
bsub -J "ArrayB[1-10]" <cmd2>
bsub -w "done(ArrayA[3]) && done(ArrayB[5])" <cmd>

要素ごとの依存関係を行うこともできます。次のジョブのi番目の要素は、対応する要素がステータスにArrayB達した場合にのみ実行されます:DONE

bsub -w "done(ArrayB[*])" -J "ArrayC[1-10]" <cmd3>

-w ここで指定できるさまざまなことについての詳細情報を見つけることができます。

于 2013-09-12T15:11:52.783 に答える
0

送信後に JOBID を表示したい場合は、ほとんどの場合、実行中のジョブと詳細を表示するために bhist または bhist -l を使用します。

$ bhist
Summary of time in seconds spent in various states:
JOBID   USER    JOB_NAME  PEND    PSUSP   RUN     USUSP   SSUSP   UNKWN   TOTAL
8664    F14r3   sample       2       0    187954  0       0       0       187956 
于 2013-11-25T16:01:07.387 に答える
0
$jobid = "0"
bsub pwd > $jobid
cat $jobid
于 2013-04-26T07:54:05.213 に答える