ckill#
命令#
ckill - 发送信号以终止、暂停或恢复未完成的作业
概要#
ckill[-l] [-J作业名称] [-m主机名 |-m 主机组] [-q 队列名称] [-g 作业组名称] [-r | -s (信号值 | 信号名称)] [-u 用户名 |-u 用户组| -u all] [-b “批次大小 等待秒”] [作业ID… | 0 | “job_ID[index]” …]
ckill[-h | -V]
说明#
默认情况下,发送一组信号来终止指定的作业。在 Linux 上, 会发送 SIGINT 和 SIGTERM 信号,让作业有机会在终止前进行清理,然后发送 SIGKILL 信号来终止作业。发送每个信号的时间间隔由 cb.yaml 中的 job_terminate_interval 参数定义。
用户只能操作自己的作业。只有 root 和 AIP 管理员可以操作其他用户提交的作业。队列管理员 可以操作所管队列中其他用户提交的作业。用户组管理员可以操作所管用户组中其他用户提交的作业。
如果信号请求未能到达作业执行主机,AIP 会在主机恢复连接后尝试执行该操作。 AIP 会重试最近的信号请求。
如果无法终止作业,请使用 ckill -r 从 AIP 系统中移除该作业,而无需等待其终止, 并释放作业的资源。
ckill 必须指定作业 ID 或 -m、-u、-q、-g 或 -J。
选项#
- -b “批次大小 [间隔等待秒数]”
当终止大量作业(例如,jobid 为 0)时,请指定批次大小,并在每批终止作业之间等待一秒。这是为了减少调度程序的开销。
默认情况下,等待功能处于禁用状态,ckill 命令会继续与调度程序交互以终止作业。
- -l
显示 ckill 支持的信号名称。这是 /bin/kill 支持的信号子集,并且与平台相关。
- -g job_group_name
仅对 job_group_name 指定的作业组中的作业执行操作。
ckill 不会终止路径中较低级别作业组中的作业。例如,作业附加到作业组 /mygroup 和 /mygroup/subgroup:
csub -g /mygroup myjob Job 1021 has been submitted to the default queue [medium]. csub -g /mygroup/subgroup myjob2 Job 1022 has been submitted to the default queue [medium].
以下 ckill 命令仅终止 /mygroup 中的作业,而不会终止子组 /mygroup/subgroup:
ckill -g /mygroup 0 Job <1021> is being terminated ckill -g /mygroup/subgroup 0 Job <1022> is being terminated
- -J job_name
仅对具有指定 job_name 的作业执行操作。如果在 job_ID 选项中指定的作业 ID 不是 0,则 -J 选项将被忽略。
- -m 主机名|**-m**主机组名
仅对调度到指定主机或主机组的作业执行操作。
如果未指定 job_ID,则仅对最近提交的符合条件的作业执行操作。 如果在 job_ID 选项中指定的作业 ID 不是 0,则 -m 选项将被忽略。 有关主机和主机组的更多信息,请参阅 chosts 和 cmgroup 。
- -q 队列名
仅对指定队列中的作业执行操作。
如果未指定 job_ID,则仅对最近提交的符合条件的作业执行操作。
如果在 job_ID 选项中指定的作业 ID 不是 0,则 -q 选项将被忽略。
有关队列的更多信息,请参阅 cqueues 。
- -r
从 AIP 系统中删除作业,而不等待该作业在操作系统中终止。
发送与不带 -r 选项的 ckill 相同的一系列信号,不同之处在于,作业会立即从系统中移除, 作业会被标记为EXIT,并且 AIP 监控的作业资源会在 AIP 收到第一个信号后立即释放。
也适用于已发出 ckill 命令但CBJM 无法对其进行操作的作业(处于 ZOMBI 状态的作业)。 如果 CBJM 在作业完全移除之前恢复,AIP 会忽略使用 ckill -r 终止的僵尸作业。
仅对无法在操作系统中终止的作业或无法使用 ckill 以其他方式移除的作业使用 ckill -r。
-r 选项不能与 -s 选项一起使用。
- -s (signal_value | signal_name)
将指定的信号发送到指定的作业。您可以指定一个名称(去除 SIG 前缀,例如 KILL),或一个数字(例如 9)。
符合条件信号名称由 ckill -l 列出。
-s 选项不能与 -r 选项一起使用。
使用 ckill -s 命令,通过适当的信号(而不是 cstop 或 cresume)来暂停和恢复作业。 发送 SIGCONT 信号与使用 cresume 相同。向顺序作业发送 SIGSTOP 信号或向并行作业发送 SIGTSTP 信号与使用 cstop 相同。
您无法暂停已暂停的作业,也无法恢复未暂停的作业。对处于 USUSP 状态的作业使用 SIGSTOP 或 SIGTSTP 信号无效,对未处于 PSUSP 或 USUSP 状态的作业使用 SIGCONT 信号也无效。有关作业状态的更多信息,请参阅 cjobs 。
- -u 用户名|-u用户组名| -u all
仅对指定用户或用户组提交的作业执行操作 (请参阅 cugroup ),如果指定了保留用户名 all,则仅对所有用户提交的作业执行操作。
如果未指定 job_ID,则仅对最近提交的 符合条件的作业执行操作。如果 job_ID 选项中指定的作业 ID 不是 0,则 -u 选项将被忽略。
备注
用户必须有相应的权限才能用此参数。
- job_ID… | 0 | “job_ID[index]”…
仅对由 job_ID 或 “job_ID[index]” 指定的作业进行操作, 其中”job_ID[index]” 指定选定的作业数组元素 (参见 cjobs )。 对于作业数组,必须用引号将作业 ID 和索引括起来,并且索引必须用方括号括起来。
任何用户提交的作业都可以在此处指定,而无需使用 -u 选项。如果使用保留的作业 ID 0,则所有满足其他选项(即 -m、-q、-u 和 -J)的作业都会被 操作;所有其他作业 ID 都将被忽略。
如果指定的作业 ID 不是 0,则选项 -u、-q、-m 和 -J 无效。作业 ID 在作业提交时返回 (参见 csub ),也可以使用 cjobs 命令获取(参见 cjobs )。
- -h
将命令用法打印到标准错误输出并退出。
- -V
将 AIP 发行版本打印到标准错误输出并退出。
示例#
% ckill -s 17 -q night
向调用者提交到队列 night 的最后一个作业发送信号 17。
% ckill -q short -u all 0
终止队列 short 中的所有作业。
% ckill -r 1045
强制移除无法终止的作业 1045。