通过 slurm 中的作业数组任务 ID 来 hold/release 作业的简单方法

Easy way to hold/release jobs by job array task id in slurm

我现在有一堆作业数组 运行 (SLURM)。

例如,2552376_12552376_102552376_202552376_802552377_12552377_102552377_202552377_80 等等。

目前,我对以 _1 结尾的感兴趣。

有没有办法在不指定作业 ID 的情况下保留所有其他作业(因为我有数百个)? 以下命令适用于保留所有作业:

squeue -r -t PD -u $USER -o "scontrol hold %i" | tail -n +2 | sh

为了释放具有所需 ID 的那个,我使用

squeue -r -u $USER -o "scontrol release %i" | tail -n +2 | grep "_1$" | sh

选择正确的工作。

可以通过滥用 squeue:

的输出格式来完成作业的批量更新

保留所有待处理的工作:

squeue -r -t PD -u $USER -o "scontrol hold %i" | sh

然后释放所有以 _1

结尾的工作
squeue -r -t PD -u $USER -o "scontrol release %i" | grep "_1$" | sh

首先 运行 没有 | sh 部分的命令,以确保它按预期方式工作。

请注意 -r 选项每行显示一个作业数组元素。