等待一个或所有 LSF 作业完成

等待一个或所有 LSF 作业完成

平台 LSF,是否有一个命令会等待特定作业或我提交的所有作业完成后再返回?换句话说,我正在寻找waitbash 中内置命令的 LSF 等效项。

答案1

如果您将-K选项设置为bsub,它将等待作业完成后再返回。然后,您可以bsub在 shell 中后台运行几个命令,并使用 shell 的wait命令等待它们。示例:

#!/bin/bash
bsub -K -o out.1 sleep 10 &
bsub -K -o out.2 sleep 5 &
wait

答案2

bwait

例子:

bsub -J 'myjobname' -o bsub.log bash -c 'date && sleep 10'
bwait -w 'ended(myjobname)'

等待bwait直到相应操作bsub完成。

相同的方法也适用于-K不支持的作业数组:

bsub -J 'myjobname[1-40]' -o 'bsub%I.log" 'sleep $JOBINDEX && echo $JOBINDEX'
bwait -w 'ended(myjobname)'

此外,ended()还有done()exit(),分别bwait仅当退出状态为0或 不是时才成功退出0,否则会失败:

Wait condition is never satisfied

因为 LSF 对于这两种情况有不同的工作状态。

相关文档:

bsub -I

-K如果你只有一份工作,这是另一个不错的选择。例如:

bsub -I 'echo a;sleep 1;echo b;sleep 1;echo c'
echo done

将标准输出实时打印到终端,并且仅echo done在作业完成后运行。

记录于:https://www.ibm.com/docs/en/spectrum-lsf/10.1.0?topic=options-i

相关内容