在 slurm 中,调用该命令squeue -u <username>将列出给定用户的所有挂起或活动的作业。我想知道是否有一种快速的方法来统计它们,以便我知道有多少未完成的工作,包括待处理和正在运行的工作。谢谢!
tsh*_*ono 10
如果您只想总结 的输出squeue,如何:
squeue -u <username> | awk '
BEGIN {
abbrev["R"]="(Running)"
abbrev["PD"]="(Pending)"
abbrev["CG"]="(Completing)"
abbrev["F"]="(Failed)"
}
NR>1 {a[$5]++}
END {
for (i in a) {
printf "%-2s %-12s %d\n", i, abbrev[i], a[i]
}
}'
Run Code Online (Sandbox Code Playgroud)
这产生了类似的东西:
R (Running) 1
PD (Pending) 4
Run Code Online (Sandbox Code Playgroud)
说明:
job state假设按照默认格式是在第5场squeue。为了方便起见,请将以下几行添加到您的.bash_aliases或.bashrc(文件名可能取决于系统):
function summary() {
squeue "$@" | awk '
BEGIN {
abbrev["R"]="(Running)"
abbrev["PD"]="(Pending)"
abbrev["CG"]="(Completing)"
abbrev["F"]="(Failed)"
}
NR>1 {a[$5]++}
END {
for (i in a) {
printf "%-2s %-12s %d\n", i, abbrev[i], a[i]
}
}'
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以仅使用 调用命令summary [option],如果需要(通常是不必要的)[option],squeue则接受选项。
希望这可以帮助。
小智 8
我会以不同的方式解释“快速命令”。另外,当您使用作业数组时,我会添加 -r 的情况:
squeue -u <username> -h -t pending,running -r | wc -l
Run Code Online (Sandbox Code Playgroud)
选项 -h 删除标题“wc -l”(字数)计算输出的行。最终我将它与手表一起使用
watch 'squeue -u <username> -h -t pending,running -r | wc -l'
Run Code Online (Sandbox Code Playgroud)
在我看来,@skytaker 的这条评论确实提供了最好的解决方案,区分待处理和正在运行,为每个问题提供单独的计数。与 Stefan Maschek 的解决方案的唯一区别是使用 uniq 而不是 wc:
squeue -u <username> -h -t pending,running -r -O "state" | uniq -c
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2745 次 |
| 最近记录: |