scancel

部分: Slurm 命令 (1)
更新: Slurm 命令
索引

 

名称

scancel - 用于向受 Slurm 控制的作业或作业步骤发送信号。

 

概要

scancel [选项...] [job_id[_array_id][.step_id]] [job_id[_array_id][.step_id]...]

 

描述

scancel 用于向作业、作业数组或作业步骤发送信号或取消。 可以使用作业规范过滤器或以空格分隔的特定作业和/或作业步骤 ID 列表来发送任意数量的作业或作业步骤的信号。 如果指定了作业数组的作业 ID 和数组 ID 值,并且与该数组 ID 值关联的作业已从数组中拆分,则仅取消该作业数组元素。 如果指定了作业数组的作业 ID 而没有数组 ID 值,或者数组 ID 值对应于未从数组中拆分的作业,则将取消所有作业数组元素。 当异构作业处于 PENDING 状态时,只能取消整个作业,而不能取消其单个组件。 在 PENDING 状态下请求取消异构作业的单个组件将返回错误。 作业开始执行后,可以取消单个组件,除了组件零。如果取消组件零,则整个异构作业将被取消。 只有作业的拥有者或用户 root 才能发送信号。 如果未经授权的用户尝试向作业或作业步骤发送信号,将打印错误消息,并且作业不会被发送信号。

 

选项

-A, --account=account
将 scancel 操作限制为此收费账户下的作业。

-b, --batch
默认情况下,除了 SIGKILL 之外,不会向批处理步骤(shell 脚本)发送其他信号。使用此选项时,scancel 仅向批处理步骤发送信号,而不发送给其他步骤。 这在 shell 脚本必须捕获信号并采取某些应用程序定义的操作时非常有用。 大多数 shell 在命令运行时无法处理信号(即是批处理步骤的子进程),因此 shell 需要等待命令结束后才能处理信号。 使用此选项时,批处理步骤的子进程不会被发送信号。如果需要这样,请使用 -f, --full注意: 如果与 -f, --full 一起使用,则此选项将被忽略。 注意: 如果指定了 step_id,则此选项不适用。 注意: shell 本身可能在接收到许多信号时退出。 您可以通过在 shell 脚本中显式捕获信号来避免这种情况(例如,"trap <arg> <signals>")。有关详细信息,请参见 shell 文档。

-M, --clusters=<string>
向指定集群发出命令。隐含 --ctld。 请注意,slurmdbd 必须处于运行状态,以便此选项正常工作,除非在配置了 FederationParameters=fed_display 的联合体中运行。

--ctld
如果此选项未与 --interactive--sibling 或特定步骤 ID 一起使用,则会向 slurmctld 发出单个请求,以向所有匹配指定过滤器的作业发送信号。这大大提高了 slurmctld 和 scancel 的性能。否则,此选项会导致 scancel 将每个作业信号请求发送到 slurmctld 守护进程,而不是直接发送到 slurmd 守护进程,这会增加开销,但提供更好的容错能力。--ctld 是使用 --clusters 选项时的默认行为。

-c, --cron
确认请求取消由 scrontab 提交的作业。此选项仅在 ScronParameters 中设置了 "explicit_scancel" 选项时有效。

-f, --full
默认情况下,除了 SIGKILL 之外,不会向批处理步骤(shell 脚本)发送其他信号。使用此选项时,scancel 还会向批处理脚本及其子进程发送信号。 大多数 shell 在命令运行时无法处理信号(即是批处理步骤的子进程),因此 shell 需要等待命令结束后才能处理信号。 与 -b, --batch 不同,使用此选项时,批处理步骤的子进程也会被发送信号。 注意: srun 步骤也是批处理步骤的子进程,因此步骤也会被发送信号。

--help
打印描述所有 scancel 选项的帮助消息。

-H, --hurry
不转移任何突发缓冲区数据。

-i, --interactive
交互模式。在执行取消操作之前确认每个 job_id.step_id。

-n, --jobname=job_name, --name=job_name
将 scancel 操作限制为具有此作业名称的作业。

--me
将 scancel 操作限制为当前用户拥有的作业。

-w, --nodelist=host1,host2,...
取消使用任何给定主机的作业。该列表可以指定为以逗号分隔的主机列表、主机范围(例如 host[1-5,7,...])或文件名。只有当主机列表包含 "/" 字符时,才会被视为文件名。

-p, --partition=partition_name
将 scancel 操作限制为此分区中的作业。

-q, --qos=qos
将 scancel 操作限制为具有此服务质量的作业。

-Q, --quiet
如果指定的作业已完成,则不报告错误。 此选项与 --verbose 选项不兼容。

-R, --reservation=reservation_name
将 scancel 操作限制为具有此保留名称的作业。

--sibling=cluster_name
从联合作业中移除一个活动的兄弟作业。

-s, --signal=signal_name
要发送的信号的名称或编号。如果未使用此选项,则指定的作业或步骤将被终止。

-t, --state=job_state_name
将 scancel 操作限制为处于此状态的作业。job_state_name 可以取值为 "PENDING"、"RUNNING" 或 "SUSPENDED"。

--usage
打印简要帮助消息,列出 scancel 选项。

-u, --user=user_name
将 scancel 操作限制为由给定用户拥有的作业。

-v, --verbose
打印额外的日志记录。多个 v 会增加日志详细程度。 此选项与 --quiet 选项不兼容。

-V, --version
打印 scancel 命令的版本号。

--wckey=wckey
将 scancel 操作限制为使用此工作负载特征键的作业。

 

参数

job_id
要发送信号的 Slurm 作业 ID。

step_id
要发送信号的作业步骤 ID。 如果未指定,则操作将在作业级别执行。

如果未使用 --batch--signal,则整个作业将被终止。

当使用 --batch 时,将向批处理 shell 进程发送信号。 shell 的子进程不会被 Slurm 发送信号,但 shell 可能会转发信号。

当未使用 --batch 但使用 --signal 时,将向所有作业步骤发送信号,但不会向批处理脚本本身发送信号。

 

性能

在没有 --ctld 选项的情况下执行 scancel;或者在使用 --ctld 选项并且使用了 --interactive--sibling 或特定步骤 ID 的情况下;会向 slurmctld 发送远程过程调用以获取所有作业。scancel 然后为每个匹配请求过滤器的作业发送信号作业远程过程调用。

在使用 --ctld 选项且没有使用 --interactive--sibling 或特定步骤 ID 的情况下,会向 slurmctld 发送单个远程过程调用,以向所有匹配请求过滤器的作业发送信号。因此,建议使用 --ctld 选项以减少发送到 slurmctld 的远程过程调用数量。

如果来自 scancel 或其他向 slurmctld 守护进程发送远程过程调用的 Slurm 客户端命令的调用数量足够多,可能会导致 slurmctld 守护进程的性能下降,可能导致服务拒绝。

请勿在 shell 脚本或其他程序的循环中运行 scancel 或其他向 slurmctld 发送远程过程调用的 Slurm 客户端命令。确保程序将对 scancel 的调用限制在收集所需信息的最低限度。

 

环境变量

某些 scancel 选项可以通过环境变量设置。以下是这些环境变量及其对应选项的列表。 (注意:命令行选项将始终覆盖这些设置。)

SCANCEL_ACCOUNT
-A, --account=account

SCANCEL_BATCH
-b, --batch

SCANCEL_CTLD
--ctld

SCANCEL_CRON
-c, --cron

SCANCEL_FULL
-f, --full

SCANCEL_HURRY
-H, --hurry

SCANCEL_INTERACTIVE
-i, --interactive

SCANCEL_NAME
-n, --name=job_name

SCANCEL_PARTITION
-p, --partition=partition_name

SCANCEL_QOS
-q, --qos=qos

SCANCEL_STATE
-t, --state=job_state_name

SCANCEL_USER
-u, --user=user_name

SCANCEL_VERBOSE
-v, --verbose

SCANCEL_WCKEY
--wckey=wckey

SLURM_CONF
Slurm 配置文件的位置。

SLURM_CLUSTERS
-M, --clusters

SLURM_DEBUG_FLAGS
指定 scancel 使用的调试标志。有关完整的标志列表,请参见 slurm.conf(5) 手册页。环境变量优先于 slurm.conf 中的设置。

 

注意

如果提供了多个过滤器(例如 --partition--name),则仅会向满足所有过滤选项的作业发送信号。

取消作业步骤不会导致作业被终止。 必须取消作业以释放资源分配。

要取消作业,请在没有 --signal 选项的情况下调用 scancel。这将首先向所有步骤发送 SIGCONT 信号以最终唤醒它们,然后发送 SIGTERM 信号,接着等待 slurm.conf 文件中定义的 KillWait 持续时间,最后如果它们没有终止,则发送 SIGKILL 信号。这给正在运行的作业/步骤留出清理的时间。

如果向整个作业发送信号值为 "KILL",这将取消活动的作业步骤,但不会取消作业本身。

 

授权

使用 SlurmDBD 时,定义了 AdminLevel(操作员或管理员)的用户以及账户协调员用户被授予对其他用户作业调用 scancel 的权限。

 

示例

向作业 1234 的步骤 1 和 3 发送 SIGTERM:
$ scancel --signal=TERM 1234.1 1234.3

取消作业 1234 及其所有步骤:
$ scancel 1234

向作业 1235 的所有步骤发送 SIGKILL,但不取消作业本身:
$ scancel --signal=KILL 1235

向作业 1236 的批处理 shell 进程发送 SIGUSR1:
$ scancel --signal=USR1 --batch 1236

取消用户 "bob" 在分区 "debug" 中的所有待处理作业:
$ scancel --state=PENDING --user=bob --partition=debug

仅取消作业数组 1237 的数组 ID 4
$ scancel 1237_4

 

版权

版权所有 (C) 2002-2007 加州大学理事会。 在劳伦斯利弗莫尔国家实验室制作(参见免责声明)。
版权所有 (C) 2008-2011 劳伦斯利弗莫尔国家安全。
版权所有 (C) 2010-2022 SchedMD LLC。

此文件是 Slurm 的一部分,这是一个资源管理程序。 有关详细信息,请参见 <https://slurm.schedmd.com/>。

Slurm 是自由软件;您可以根据自由软件基金会发布的 GNU 通用公共许可证的条款重新分发和/或修改它;许可证的版本为 2,或(根据您的选择)任何更高版本。

Slurm 的发行是希望它会有用,但不提供任何担保;甚至不提供适销性或特定用途适用性的暗示担保。有关更多详细信息,请参见 GNU 通用公共许可证。

 

另见

slurm_kill_job (3), slurm_kill_job_step (3)


 

索引

名称
概要
描述
选项
参数
性能
环境变量
注意
授权
示例
版权
另见

此文档由 man2html 使用手册页创建。
时间: 2025年7月2日 13:21:55 GMT