LSF - 获取提交作业的ID

时间:2012-08-23 14:33:12

标签: lsf

说我用bsub pwd之类的东西提交工作。现在我想获得该作业的作业ID,以便为下一个作业构建依赖项。有什么方法可以让bsub返回作业ID吗?

5 个答案:

答案 0 :(得分:7)

Nils和Andrey分别在shell和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>

您甚至可以逐个元素依赖。以下作业的 i -th元素仅在ArrayB中的相应元素达到DONE状态时运行:

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

您可以在-w here找到有关您可以指定的各种内容的更多信息。

答案 1 :(得分:5)

作为参考,这是迄今为止我能想出的最佳解决方案。它利用了bsub将包含ID的行写入STDOUT的事实。

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

用法:

jobid=$(nk_jobid bsub pwd)

答案 2 :(得分:4)

如果您使用的是C ++,则可以使用lsblib,LSF C API来提交作业。输入和输出是结构。特别是,输出结构包含作业ID。

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

答案 3 :(得分:0)

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

答案 4 :(得分: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