Skip to main content

控制作业

常用控制命令

bjobs			#查看自己已提交或正在运行但尚未结束的作业

bjob -l JOBID	#查看某个已提交或正在运行作业的的详细信息

bhist			#查看已完成历史作业

bhist -l JOBID	#查看已完成历史作业的详细信息

bpeek JOBID		#查看正在运行作业的标准输出

bkill JOBID		#终止作业

btop JOBID		#设置作业最先运行
bbot JOBID		#设置作业最后运行
#仅能对自己的作业进行排序

作业依赖

一个计算任务可能分成几步,而每一步对资源的需求不同,因此需要分开提交,但这些作业之间又具有依赖关系,bsub 可使用选项 -w 'dependency_expression'指定依赖关系。如果计算任务分成几步,但是每步对资源需求一样,那么请写在一个作业任务中依次执行。

  • -w 'done(job_ID | "job_name")':需要 job_ID 或 job_name 作业完成且状态为 DONE,即退出码为0
  • -w 'ended(job_ID | "job_name")':需要 job_ID 或 job_name 作业完成或退出,状态为 EXIT 或 DONE
  • 支持逻辑表达式&& (AND)、|| (OR)、! (NOT)
  • 孤儿作业(即依赖条件不可能满足的)1分钟后会被自动终止

更多详细信息见官方文档

作业等待

bwait -w "wait_condition" [-t timeout]

暂停并等待作业条件满足,不满足一直暂停等待,满足则执行完毕返回。

典型用法:在脚本中不要循环使用bjobs判断作业状态,而用bwait等待作业运行完成,这样更优雅且能显著降低对集群的压力。

  • -w wait_condition:要满足的等待条件,此表达式与上述bsub -w选项的格式相同。
  • -t timeout:等待条件的超时,范围为1-525600分钟,默认为一年。