2012-08-23 23 views
8

bsub pwd gibi bir şey kullanarak iş teklif ettiğimi varsayalım. Şimdi bir sonraki iş için bir bağımlılık oluşturmak için bu işin iş kimliğini almak istiyorum. İş kimliğini iade etmek için bsub alabileceğim bir yol var mı?LSF - Teslim edilen işlevin kimliğini al

cevap

5

Referans olarak, şimdiye kadar ortaya çıkabilecek en iyi çözüm budur. Bsub'un ID'yi STDOUT'a içeren bir satır yazması avantajından yararlanır.

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

Kullanımı: sizi C++ kullandığınız durumda

jobid=$(nk_jobid bsub pwd) 
+0

Hangi dil? –

+0

@AndreyRubshtein thats bash. – jsmedmar

+0

$ (nk_jonid bsub $ DEĞİŞKEN) – jsmedmar

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

, sen işlerini göndermek için lsblib LSF C API kullanabilirsiniz. Giriş ve çıkış yapıdır. Özellikle, çıktı yapısı iş kimliğini içerir.

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

Nils ve Andrey, bu özel soruya sırasıyla kabuk ve C/C++ ortamlarında verilen yanıtlara sahiptir. Bina bağımlılıkları amaçları için, ayrıca -J ardından iş adına göre bağımlılığı oluşturmak ile işinizi adlandırabilirsiniz:

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

biraz daha bilgi here var.

Bu aynı zamanda iş diziler çalışır: Hatta eleman-eleman bağımlılığını yapabilirsiniz

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> 

Sen -where belirtebileceğiniz çeşitli şeylerle ilgili daha fazla bilgi bulabilirsiniz: Aşağıdaki işin i-inci elemanı sadece ArrayB karşılık gelen eleman DONE durumunu ulaştığında çalışacaktır.

+0

(+1) İçindeki bir değişkeni nasıl geçireceğinizi merak ediyorum. Sorunun asıl amacını fark ettiniz. –

+1

Bu iyi ama iş dizileri ile çalışmıyor ... – jsmedmar

+0

@jsmedmar Aslında, öyle. Cevabı biraz detay ekleyeceğim. – Squirrel

0

Gönderimden sonra JOBID'yi görüntülemek istiyorsanız, çoğu zaman bhist veya bhist -l'yi kullanıp işlerini ve ayrıntılarını görüntülemek için kullanacağım.

$ 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 
İlgili konular