2012-08-23 10 views
8

Digamos que presento un trabajo usando algo como bsub pwd. Ahora me gustaría obtener el ID de trabajo de ese trabajo para construir una dependencia para el próximo trabajo. ¿Hay alguna forma en que pueda conseguir que bsub devuelva la identificación del trabajo?LSF - Obtener ID del trabajo enviado

Respuesta

5

Solo como referencia, esta es la mejor solución que podría encontrar hasta ahora. Aprovecha el hecho de que bsub escribe una línea que contiene la ID en STDOUT.

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

Uso:

jobid=$(nk_jobid bsub pwd) 
+0

¿Qué idioma es? –

+0

@AndreyRubshtein eso es bash. – jsmedmar

+0

Me pregunto cómo pasar una variable dentro del $ (nk_jonid bsub $ VARIABLE) – jsmedmar

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

En caso de que usted está usando C++, puede utilizar la API de lsblib, LSF C para enviar trabajos. La entrada y la salida son estructuras. En particular, la estructura de salida contiene la identificación del trabajo.

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

Nils y Andrey tienen las respuestas a esta pregunta específica en entornos shell y C/C++ respectivamente. A los efectos de las dependencias del edificio, también se puede nombrar a su trabajo con -J luego construir la dependencia basado en el nombre del trabajo:

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

Hay un poco más de información here.

Esto también funciona con matrices de empleo

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

Incluso se puede hacer la dependencia de elemento por elemento. i-ésimo elemento de la siguiente tarea sólo se ejecutará cuando el elemento correspondiente en ArrayB alcanza DONE estado:

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

Puede encontrar más información sobre las distintas cosas que se pueden especificar en -where.

+0

(+1) Lo bueno es que notó la intención real de la pregunta. –

+1

esto es bueno, pero no funciona con matrices de trabajos ... – jsmedmar

+0

@jsmedmar En realidad, lo hace. Añadiré algunos detalles a la respuesta. – Squirrel

0

Si solo desea ver el JOBID después del envío, la mayoría de las veces solo usaré bhist o bhist -l para ver los trabajos en ejecución y los detalles.

$ 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 
Cuestiones relacionadas