esub
当用户提交job时,可以用esub脚本管控用户提交任务。使用esub脚本可以在job提交时验证job参数,并选择接受/修改/拒绝job。esub脚本会在提交节点上运行。
注意
目前esub按照以下顺序检查,并且使用第一个找到的文件:
- 固定位置的
/etc/wrappers/esub
LSF_SERVERDIR
目录下的esub
文件
原理
用户使用bsub
提交命令时,bsub会检查固定位置的esub
脚本,如果存在则调用esub
脚本。会执行该脚本,并传递一些环境变量给esub
脚本,esub
脚本可以根据这些环境变量来决定是否接受/修改/拒绝job。
根据esub
的退出码,bsub会决定是否接受/修改/拒绝job。
- 如果
esub
脚本返回0,则 接受job,并执行参数更新。 - 如果
esub
脚本返回LSF_SUB_ABORT_VALUE,则拒绝job。 - 如果
esub
脚本返回其它值,则使用原始参数提交job。
部署方法
- 安装lsf-wrapper,导入环境变量
- 放置esub脚本到
$LSF_SERVERDIR/esub
或/etc/wrappers/esub
- 之后用bsub命令提交任务时会受到esub脚本限制
esub使用的环境变量
- LSF_INVOKE_CMD:调用esub脚本的命令名,目前只支持
bsub
- LSB_SUB_ABORT_VALUE: 如果希望拒绝该job,需要在esub脚本中指定
exit $LSB_SUB_ABORT_VALUE
- LSB_SUB_PARM_FILE: bsub的参数会存储到这个文件,esub脚本在job提交时读取该文件,然后可以根据参数选择接受/修改/拒绝job。可使用的参数在下一章节
esub使用的参数
中指定 - LSB_SUB_MODIFY_FILE: 如果希望修改job参数,可以使用esub脚本把新的选项值写入该文件。可使用的参数在下一章节
esub使用的参数
中指定 - LSB_SUB_MODIFY_ENVFILE: 如果希望修改用户环境变量,可以使用esub脚本把新的环境变量写入该文件
esub使用的参数
目前支持的参数如下:
参数 | esub变量名 | 用途 |
---|---|---|
-e, -eo | LSB_SUB_ERR_FILE | 标准错误文件路径 |
-o, -oo | LSB_SUB_OUT_FILE | 标准输出文件路径 |
-i | LSB_SUB_IN_FILE | 标准输入文件路径 |
-W | LSB_SUB_RLIMIT_RUN | 运行时长限制 |
-n | LSB_SUB_NUM_PROCESSORS | 任务数量 |
-R | LSB_SUB_RES_REQ | 资源申请参数 -R |
-b | LSB_SUB_BEGIN_TIME | 指定任务开始时间 |
-t | LSB_SUB_TERM_TIME | 指定任务强制结束时间 |
-x | LSB_SUB_EXCLUSIVE | 独占节点 |
-w | LSB_SUB_DEPEND_COND | 前置任务条件 |
-E | LSB_SUB_PRE_EXEC | prelog脚本路径 |
-Ep | LSB_SUB_POST_EXEC | postlog脚本路径 |
-J | LSB_SUB_JOB_NAME | 任务名称 |
-P | LSB_SUB_PROJECT_NAME | 项目名称 |
-G | LSB_SUB_USER_GROUP | fairshare用户组名 |
-q | LSB_SUB_QUEUE | 队列名/分区名 |
-Is | LSB_SUB_PTY_SHELL | 是否申请PTY Shell |
-Ip | LSB_SUB_PTY | 是否申请PTY |
-L | LSB_SUB_LOGIN_SHELL | 是否使用Login Shell |
-Jd | LSB_SUB_JOB_DESCRIPTION | 任务描述 |