2012-08-23 17 views
8

bsub pwdのようなものを使用してジョブを送信するとします。今度は、その仕事の求人IDを取得して、次の仕事の依存関係を構築したいと思います。私がジョブIDを返すためにbsubを得ることができる何らかの方法はありますか?LSF - 提出されたジョブのIDを取得

答えて

5

ちょうど参考に、これはこれまで私が思いつくことができる最高の解決策です。 bsubがIDを含む行をSTDOUTに書き込むという利点があります。

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

は使用法:あなたがC++を使用している場合は

jobid=$(nk_jobid bsub pwd) 
+0

どのような言語ですか? –

+0

@AndreyRubshtein thats bash。 – jsmedmar

+0

$(nk_jonid bsub $ VARIABLE)の中に変数を渡す方法がわかりました – jsmedmar

0
$jobid = "0" 
bsub pwd > $jobid 
cat $jobid 
4

、あなたはジョブを送信するためにlsblib、LSFのC APIを使用することができます。入力と出力は構造体です。特に、出力構造体にはジョブIDが含まれています。

#include <lsf/lsbatch.h>  
LS_LONG_INT lsb_submit (struct submit *jobSubReq, struct submitReply *jobSubReply) 
7

NilsとAndreyはそれぞれシェルとC/C++環境でこの特定の質問に対する答えを持っています。建物の依存関係の目的のために、あなたはまた、ジョブ名に基づいて依存関係を構築し、その後-Jとのあなたの仕事に名前を付けることができます。

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

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

また、これはジョブ配列で動作します:

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

あなたも、要素ごとの依存関係を行うことができます。

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

あなたは-whereに指定することができ、様々な事柄についての詳細情報を見つけることができます:ArrayB内の対応する要素がDONE状態に達したときに、次のジョブの番目の要素にのみ実行されます。

+0

(+1)質問の実際の意図に気付きました。 –

+1

これはいいですが、ジョブ配列では機能しません... – jsmedmar

+0

@jsmedmar実際はそうです。私は答えにいくつかの詳細を追加します。 – Squirrel

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