简单地说,调用命令squeue -u <username>将列出给定用户的所有待处理或 Activity 的作业。我想知道是否有一种快速的方法来汇总所有这些,以便我知道有多少出色的工作,包括待处理和积极运行的工作。谢谢!

最佳答案

如果您只想总结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]
    }
}'

产生类似:
R  (Running)    1
PD (Pending)    4

说明:
  • 根据job state的默认格式,假定squeue在第5个字段中。
  • 然后,脚本将对每个作业状态代码的出现进行计数,除了包含 header 的第一行以外。
  • 最后,它报告每个作业状态代码的计数。

  • 为了方便起见,请将以下行添加到.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]
            }
        }'
    }
    

    然后,您可以仅使用summary [option]调用命令,其中必要时[option]接受squeue的选项(大多数情况下没有必要)。

    希望这可以帮助。

    08-19 22:08