控制用户帐户中的所有作业
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 手册页
我正在尝试保留从我的帐户提交的所有工作。但是,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 手册页