和平台 LSF,是否有一个命令会等待特定作业或我提交的所有作业完成后再返回?换句话说,我正在寻找wait
bash 中内置命令的 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 对于这两种情况有不同的工作状态。
相关文档:
- https://www.ibm.com/support/knowledgecenter/en/SSWRJV_10.1.0/lsf_command_ref/bwait.1.html
- https://www.ibm.com/support/knowledgecenter/SSWRJV_10.1.0/lsf_command_ref/bsub.w.1.html#bsub_option_w
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