esub#
系统命令#
esub、eexec - 作业提交和执行时的外部可执行文件
概要#
CB_SERVERDIR/esub
CB_SERVERDIR/eexec
CB_SERVERDIR一般为:/opt/skyformai/sbin
描述#
管理员可以编写这些外部提交 (esub) 和执行 (eexec) 可执行文件,以对作业执行特定于站点的操作。
CB_SERVERDIR一般为:/opt/skyformai/sbin
提交作业时(参见 csub 和 crestart ),如果在 CB_SERVERDIR 中找到 esub,则会执行 eexec。在执行主机上,eexec 会在作业启动、完成以及启动检查点时运行。环境变量 LS_EEXEC_T 分别设置为 START、END 和 CHKPNT,以指示何时调用 eexec。如果 esub 需要向 eexec 传递一些数据,esub 可以 简单地将数据写入标准输出;eexec 可以通过其标准输入获取数据。 因此,AIP 实际上是在“esub | eexec”中实现了管道。
在设置作业的环境变量后,eexec 会以用户身份执行。父作业进程会等待 eexec 完成后再继续执行;因此,eexec 预计会完成。
调用 eexec 的进程的 pid 存储在环境变量 CB_JOBPID 中。如果 eexec 旨在监视作业的执行情况,则 eexec 必须 fork 一个子进程,然后让父 eexec 进程退出。在监视作业执行的同时,eexec 子进程应定期通过测试 CB_JOBPID 变量来检查作业进程是否仍然处于活动状态。作业完成后,eexec 子进程应退出。
除了 csub 和 crestart 之外,cmod 还会调用 esub。调用 esub 时,环境变量 CB_SUB_ABORT_VALUE 和 CB_SUB_PARM_FILE 会被设置。如果 esub 退出时返回 CB_SUB_ABORT_VALUE 的值,则作业请求将被中止。 CB_SUB_PARM_FILE 指定包含作业请求参数的临时文件的名称。有关此文件的内容,请参阅 PARAMETER FILE 部分。CB_SUB_ABORT_VALUE 和 CB_SUB_PARM_FILE 变量的典型用途是禁用某些提交选项。
在交互式远程执行中调用 esub 时,CB_SUB_ABORT_VALUE 和 CB_SUB_PARM_FILE 变量未定义。
esub 可以通过写入环境变量 CB_SUB_MODIFY_FILE 指定的文件来更改任何作业选项。例如:
#!/bin/bash
# esub 修改 -R 选项的示例
source $CB_SUB_PARM_FILE # 环境变量中获得所有作业提交参数
echo 'CB_SUB_RES_REQ="select[mem>100]"' > $CB_SUB_MODIFY_FILE # 修改csub -R 参数
exit 0
请注意,参数值需要用双引号括起来。
参数文件#
作业提交和修改参数文件包含一行,格式为 option_name=value,用于指定每个作业选项。value 为“SUB_RESET”表示此选项已被 cmod 重置。如果 esub 是 Bourne Shell 脚本,则运行“.$CB_SUB_PARM_FILE”将使 esub 可以使用这些变量。option_name 包括:
- CB_SUB_JOB_NAME
为指定的作业名称(csub -J)。
- CB_SUB_QUEUE
为指定的队列名称(csub -q)。
- CB_SUB_IN_FILE
为指定的标准输入文件名(csub -i | -is)。
- CB_SUB_OUT_FILE
为指定的标准输出文件名(csub -o | -oo)。
- CB_SUB_ERR_FILE
为指定的标准错误文件名(csub -e | -eo)。
- CB_SUB_ADDITIONAL
为指定的 additional_esub_information(csub -a)。
- CB_SUB_EXCLUSIVE
为“Y”表示独占执行(csub -x)。
- CB_SUB_NOTIFY_END
为“Y”,表示作业结束时发送邮件通知 (csub -N)。
- CB_SUB_NOTIFY_BEGIN
为“Y”,表示作业开始时发送邮件通知 (csub -B)。
- CB_SUB_USER_GROUP
表示指定的用户组名称(csub -G)。
- CB_SUB_CHKPNT_PERIOD
表示指定的检查点周期(csub -k)。
- CB_SUB_CHKPNT_DIR
表示指定的检查点目录(csub -k)。
- CB_SUB_COMMANDNAME
表示作业命令的第一个参数 (csub作业命令第一个词)。
- CB_SUB_COMMAND_LINE
表示作业命令及其参数。使用 vncsub/dcvsub 提交作业时,此变量会被省略。
- CB_SUB_RESTART_FORCE
为“Y”表示强制重启作业(crestart -f)。
- CB_SUB_RESTART
为“Y”表示重启作业(crestart)。
- CB_SUB_RERUNNABLE
为“Y”表示可重新运行作业(csub -r)。
- CB_SUB_HOST_SPEC
表示指定的主机规范。
- CB_SUB_DEPEND_COND
表示指定的依赖条件(csub -w)。
- CB_SUB_RES_REQ
表示指定的资源需求字符串(csub -R)。
- CB_SUB_PRE_EXEC
表示指定的预执行命令(csub -E)。
- CB_SUB_LOGIN_SHELL
是指定的登录 shell(csub -L)。
- CB_SUB_MAIL_USER
是指定的发送电子邮件的用户(csub -u)。
- CB_SUB_MODIFY
为“Y”表示修改请求(cmod)。
- CB_SUB_MODIFY_ONCE
为“Y”表示修改一次请求(cmod)。
- CB_SUB_PROJECT_NAME
是指定的项目名称(csub -P)。
- CB_SUB_INTERACTIVE
为“Y”表示交互式作业(csub -I)。
- CB_SUB_PTY
为“Y”表示支持 PTY 的交互式作业(csub -Ip)。
- CB_SUB_PTY_SHELL
为“Y”表示支持 PTY Shell 的交互式作业(csub Is)。
- CB_SUB_HOSTS
是执行主机名列表(csub -m)。
- CB_SUB_NUM_PROCESSORS
是请求的最小处理器数量(csub -n)。
- CB_SUB_MAX_NUM_PROCESSORS
是请求的最大处理器数量(csub -m)。
- CB_SUB_BEGIN_TIME
为开始时间,以秒为单位,自 1970 年 1 月 1 日 00:00:00 GMT 时间起计算(csub -b)。
- CB_SUB_TERM_TIME
为终止时间,以秒为单位,自 1970 年 1 月 1 日 00:00:00 GMT 时间起计算(csub -t)。
- CB_SUB_OTHER_FILES
为“SUB_RESET”,以指示正在执行 cmod 操作以重置要传输的文件数(csub/cmod -f)。
- CB_SUB_OTHER_FILES_nn
nn 是指示特定文件传输的索引号。 值 是指定的文件传输表达式。例如,对于“csub -f “a > b” -f “c < d””,定义如下:
CB_SUB_OTHER_FILES_0="a > b" CB_SUB_OTHER_FILES_1="c < d"
- CB_SUB_RLIMIT_CPU
是指定的 CPU 限制(csub -c)。
- CB_SUB_RLIMIT_FSIZE
是指定的文件大小限制(csub -F)。
- CB_SUB_RLIMIT_DATA
是指定的数据大小限制(csub -D)。
- CB_SUB_RLIMIT_STACK
是指定的堆栈大小限制(csub -S)。
- CB_SUB_RLIMIT_CORE
是指定的核心文件大小限制(csub -C)。
- CB_SUB_RLIMIT_RSS
是指定的驻留大小限制(csub -M)。
- CB_SUB_RLIMIT_RUN
是指定的挂钟运行限制(csub -W)。
- CB_SUB2_CWD
是指定的当前工作目录(csub -cwd)。
- CB_SUB2_JOB_DESC
是指定的作业描述(csub -Jd)。
- CB_SUB2_APP
是指定的应用程序名称(csub -A | -app)。
- CB_SUB2_JOB_GROUP
是指定的作业组名称(csub -g)。