跳转至

ccancel - 取消作业

ccancel 终止队列中正在运行或挂起的作业,或作业内的单个步骤。

您可以通过作业ID取消作业,使用jobid.stepid格式取消单个步骤,或使用过滤条件一次取消多个作业。

命令语法

ccancel [job_id[.step_id][,job_id[.step_id]...]] [选项]

命令行选项

作业选择

  • job_id[.step_id][,job_id[.step_id]...]: 要取消的作业ID或作业步ID(逗号分隔的列表)。
  • 作业格式:<job_id><job_id>,<job_id>,<job_id>...
  • 作业步格式:<job_id>.<step_id><job_id>.<step_id>,<job_id>.<step_id>...
  • 混合格式:<job_id>,<job_id>.<step_id>,<job_id>.<step_id>...

过滤选项

  • -n, --name string: 取消具有指定作业名的作业
  • -u, --user string: 取消指定用户提交的作业
  • -A, --account string: 取消指定账户下的作业
  • -p, --partition string: 取消指定分区中的作业
  • -t, --state string: 取消指定状态的作业。有效状态:PENDING(P)、RUNNING(R)、ALL(不区分大小写)
  • -w, --nodes strings: 取消在指定节点上运行的作业(逗号分隔的列表)

输出选项

  • --json: 以 JSON 格式输出

其他选项

  • -C, --config string: 配置文件路径(默认:/etc/crane/config.yaml
  • -h, --help: 显示帮助信息
  • -v, --version: 显示版本号

过滤规则

Important

必须提供至少一个条件:作业 ID 或至少一个过滤选项。

使用多个过滤器时,将取消匹配所有指定条件的作业(AND 逻辑)。

使用示例

按作业 ID 取消

取消单个作业:

ccancel 30686

运行结果:

ccancel ccancel ccancel

取消多个作业:

ccancel 30686,30687,30688

按作业名取消

取消所有名为 "test1" 的作业:

ccancel -n test1

运行结果:

ccancel ccancel ccancel

按分区取消

取消 GPU 分区中的所有作业:

ccancel -p GPU

运行结果:

ccancel ccancel ccancel

按节点取消

取消在 crane02 上运行的所有作业:

ccancel -w crane02

ccancel

按状态取消

取消所有挂起的作业:

ccancel -t Pending

ccancel

取消所有正在运行的作业:

ccancel -t Running

取消所有作业(挂起和运行):

ccancel -t All

按账户取消

取消 PKU 账户下的所有作业:

ccancel -A PKU

ccancel

按用户取消

取消用户 ROOT 提交的所有作业:

ccancel -u ROOT

ccancel

组合过滤器

取消 CPU 分区中所有挂起的作业:

ccancel -t Pending -p CPU

取消用户 alice 在 GPU 分区中的所有作业:

ccancel -u alice -p GPU

取消特定节点上正在运行的作业:

ccancel -t Running -w crane01,crane02

JSON 输出

以 JSON 格式获取取消结果:

ccancel 30686 --json

使用过滤器和 JSON 输出取消:

ccancel -p GPU -t Pending --json

示例概览

ccancel

取消作业步骤

CraneSched支持使用步骤ID格式jobid.stepid取消作业内的单个步骤。这允许您终止特定步骤,同时保持父作业和其他步骤继续运行。

步骤取消语法

取消特定步骤:

ccancel 123.1      # 取消作业123的步骤1

取消多个步骤:

ccancel 123.1,123.2,456.3

取消整个作业(所有步骤):

ccancel 123        # 取消作业123及其所有步骤

步骤取消行为

取消步骤时:

  • 单个步骤取消:取消特定步骤(jobid.stepid)仅影响该步骤
  • 父作业继续运行
  • 同一作业中的其他步骤不受影响
  • 分配给步骤的资源释放回父作业

  • 完全作业取消:取消作业而不指定步骤ID(jobid)会取消:

  • 作业内的所有步骤
  • 父作业本身
  • 所有分配的资源被释放

步骤取消示例

仅取消作业100的步骤2:

ccancel 100.2

取消作业100的步骤1和2(步骤3如果存在则继续):

ccancel 100.1,100.2

混合取消 - 整个作业100和作业200的步骤3:

ccancel 100,200.3

取消前查询步骤:

# 查看作业的所有步骤
cqueue --step -j 123

# 根据状态取消特定步骤
ccancel 123.2,123.4

步骤取消权限

  • 普通用户:只能取消属于自己作业的步骤
  • 协调员:可以取消其账户下作业的步骤
  • 操作员/管理员:可以取消系统中的任何步骤

取消后的行为

作业取消后:

  1. 进程终止:如果分配的节点上没有该用户的其他作业,作业调度系统将终止这些节点上的所有用户进程

  2. 撤销 SSH 访问:将撤销用户对分配节点的 SSH 访问权限

  3. 资源释放:所有分配的资源(CPU、内存、GPU)立即释放,可供其他作业使用

  4. 作业状态更新:作业状态在作业历史记录中变为 CANCELLED

权限要求

  • 普通用户:只能取消自己的作业
  • 调度员:可以取消其账户内的作业
  • 操作员/管理员:可以取消系统中的任何作业

重要说明

  1. 立即生效:作业取消立即生效。默认情况下,运行中的作业会立即终止,没有宽限期

  2. 多个作业:您可以使用逗号分隔的作业 ID 或过滤条件一次取消多个作业

  3. 无确认提示:没有确认提示。命令执行后立即取消作业

  4. 状态过滤:使用 -t 针对特定作业状态,以避免意外取消处于非预期状态的作业

  5. 作业/步骤 ID 格式:ID必须遵循以下格式,不能有空格:

  6. 作业:<job_id><job_id>,<job_id>,<job_id>...
  7. 步骤:<job_id>.<step_id><job_id>.<step_id>,<job_id>.<step_id>...
  8. 混合:<job_id>,<job_id>.<step_id>...

错误处理

常见错误:

  • 无效的作业 ID:如果作业 ID 不存在或您没有取消权限,将返回错误
  • 无匹配作业:如果过滤条件不匹配任何作业,返回成功但取消 0 个作业
  • 无效状态:状态必须是以下之一:PENDING、RUNNING、ALL(不区分大小写)

另请参阅

  • cbatch - 提交批处理作业
  • crun - 运行交互式任务
  • calloc - 分配交互式资源
  • cqueue - 查看作业队列
  • cacct - 查看作业统计信息
  • ccontrol - 控制作业和系统资源