控制用户帐户中的所有作业

scontrol all jobs in user account

我正在尝试保留从我的帐户提交的所有工作。但是,scontrol hold 只接受数组,而我有很多数组。是否有替代命令,如 scancel -u user?

编辑1: 如果迭代所有作业 ID 是唯一的方法,这是我的方法:

squeue -u user | awk '{print ;}' | while read jobid; do scontrol hold $jobid; done

一种常用的方法是(滥用)使用 squeue 的格式化可能性来构建 scontrol 行:

squeue -u user --format "scontrol hold job %i"

然后将其通过管道传输到 shell:

squeue -u user --format "scontrol hold job %i" | sh

虽然将格式化文本传送到 sh 很聪明,但我可能会这样做:

squeue -u <user> --format "%i" --noheader | xargs scontrol hold

sacct --allocation --user=<user> --noheader --format=jobid | xargs scontrol hold

如果你想按州过滤,你也可以这样做:

squeue -u <user> --format "%i" --noheader --states=PENDING | xargs scontrol hold

sacct --allocation --user=<user> --noheader --format=jobid --state=PENDING | xargs scontrol hold

来源:Slurm 手册页