2012-08-23 16 views
8

Angenommen, ich übergebe einen Job, der etwas wie bsub pwd verwendet. Jetzt möchte ich die Job-ID dieses Jobs erhalten, um eine Abhängigkeit für den nächsten Job aufzubauen. Gibt es eine Möglichkeit, wie ich bsub die Job-ID zurückgeben kann?LSF - ID des übermittelten Jobs abrufen

Antwort

5

Nur als eine Referenz, das ist die beste Lösung, die ich bisher finden konnte. Es nutzt die Tatsache aus, dass bsub eine Zeile mit der ID nach STDOUT schreibt.

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

Verbrauch:

jobid=$(nk_jobid bsub pwd) 
+0

Welche Sprache ist das? –

+0

@AndreyRubshtein das ist Bash. – jsmedmar

+0

Ich frage mich, wie man eine Variable innerhalb der $ übergeben wird (nk_jonid bsub $ VARIABLE) – jsmedmar

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

Falls Sie sich mit C++, können Sie die lsblib, LSF-C-API verwenden, um Jobs zu unterbreiten. Die Eingabe und die Ausgabe sind Strukturen. Insbesondere enthält die Ausgabestruktur die Job-ID.

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

Nils und Andrey haben die Antworten auf diese spezifische Frage in Shell- bzw. C/C++ - Umgebungen. Für die Zwecke der Gebäude Abhängigkeiten, können Sie auch Ihren Job Namen mit -J dann die Abhängigkeit von dem Jobnamen bauen basiert:

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

Es ist ein bisschen mehr Info here.

Dies funktioniert auch mit Job-Arrays:

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

Sie auch Element-für-Element-Abhängigkeit tun. Die folgende Aufgabe der i -te Element wird nur dann ausgeführt, wenn das entsprechende Element in ArrayB erreicht DONE Status:

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

Sie weitere Informationen über die verschiedene Dinge finden Sie in -where angeben.

+0

(+1) Gut, dass Sie die tatsächliche Absicht der Frage bemerkt. –

+1

das ist gut, aber es funktioniert nicht mit Job-Arrays ... – jsmedmar

+0

@jsmedmar Eigentlich tut es. Ich werde der Antwort einige Details hinzufügen. – Squirrel

0

Wenn Sie nur die JOBID nach der Einreichung anzeigen möchten, verwende ich meistens bhist oder bhist -l, um die laufenden Jobs und Details anzuzeigen.

$ 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