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