从 shell 命令输出取消所有 SLURM 作业的最佳方法

Osm*_*mun 11 shell slurm

我提交了很多带有调试时间限制的 SLURM 作业脚本(我忘记更改实际运行的时间)。现在它们都是同时提交的,所以它们都以作业 ID 197xxxxx 开头。现在,我可以

squeue -u $USER | grep 197 | awk '{print $1}' 
Run Code Online (Sandbox Code Playgroud)

打印我要删除的作业 ID。但是我如何在所有这些 ID 上使用 scancel 命令。上面 shell 命令的输出看起来像

19726664
19726663
19726662
19726661
19726660
19726659
19726658
19726657
19726656
19726655
19726654
19726653
19726652
19726651
19726650
Run Code Online (Sandbox Code Playgroud)

dre*_*cko 18

为了取消我所有的 slurm 作业(省略 OP grep 197),我发现我必须修剪 squeue 输出的第一行,其中包含列标题,还:

squeue -u $USER | awk '{print $1}' | tail -n+2 | xargs scancel
Run Code Online (Sandbox Code Playgroud)


Wei*_*hou 15

squeue -u $USER | grep 197 | awk '{print $1}' | xargs -n 1 scancel
Run Code Online (Sandbox Code Playgroud)

xargs有关详细信息,请查看文档。如果scancel接受多个作业 ID(应该),您可以省略该-n 1部分。


ahm*_*_89 13

这是我通常使用的:

  1. 取消我所有的工作:

    scancel -u <my_user_name>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 通过过滤取消:即取消所有 jobId 以 26699 开头的作业):

    squeue --format="%.18i" --me -h | grep -w 26699.* | xargs scancel
    
    Run Code Online (Sandbox Code Playgroud)


小智 11

稍微短一点的版本,仅打印作业编号squeue

squeue --me -h -o "%i" | xargs scancel
Run Code Online (Sandbox Code Playgroud)