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
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)
$jobid = "0"
bsub pwd > $jobid
cat $jobid
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)
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 -w
here angeben.
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
Welche Sprache ist das? –
@AndreyRubshtein das ist Bash. – jsmedmar
Ich frage mich, wie man eine Variable innerhalb der $ übergeben wird (nk_jonid bsub $ VARIABLE) – jsmedmar