Shell

從 shell 命令輸出中取消所有 SLURM 作業的最佳方法

  • May 2, 2022

我送出了很多帶有調試時間限制的 SLURM 作業腳本(我忘了更改實際執行的時間)。現在它們都是同時送出的,所以它們都以作業 ID 197xxxx 開頭。現在,我可以做到

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
squeue -u $USER | grep 197 | awk '{print $1}' | xargs -n 1 scancel

有關詳細資訊,請查看文件xargs。如果scancel接受多個作業 ID(它應該),您可以省略該-n 1部分。

為了取消我所有的 slurm 工作(省略 OP’s grep 197),我發現我必須修剪包含列標題的 squeue 輸出的第一行:

squeue -u $USER | awk '{print $1}' | tail -n+2 | xargs scancel

引用自:https://unix.stackexchange.com/questions/417426