我提交了很多带有调试时间限制的 SLURM 作业脚本(我忘记更改实际运行的时间)。现在都是同时提交的,所以都是以job ID 197xxxxx开头。现在,我可以做
squeue -u $USER | grep 197 | awk '{print $1}'
打印我想要删除的作业 ID。但是我如何在所有这些 ID 上使用 scancel 命令。上述 shell 命令的输出如下所示
19726664
19726663
19726662
19726661
19726660
19726659
19726658
19726657
19726656
19726655
19726654
19726653
19726652
19726651
19726650
答案1
squeue -u $USER | grep ^197 | awk '{print $1}' | xargs -n 1 scancel
查看文档了解xargs
详细信息。如果scancel
接受多个作业 ID(应该如此),您可以省略该-n 1
部分。
答案2
为了取消我所有的 slurm 作业(省略 OP grep 197
),我发现我必须修剪 squeue 输出的第一行,其中包含列标题,还:
squeue -u $USER | awk '{print $1}' | tail -n+2 | xargs scancel
答案3
这是我一般使用的:
取消我所有的工作:
scancel -u <my_user_name>
通过过滤取消:即取消所有 jobId 以 26699 开头的作业):
squeue --format="%.18i" --me -h | grep -w 26699.* | xargs scancel
答案4
由于这是一个简化的解决方案,您还可以这样做:
squeue -u $USER -h | awk '{print $1}' | xargs scancel
这会省略格式选项,而是删除带有-h
标志的标题。