我正在使用 slurm 运行多个数组作业。对于给定的数组作业 ID(假设为 885881),我想列出失败作业和已完成作业的计数。像这样的东西:
输入:
<some-command> -j 885881
Run Code Online (Sandbox Code Playgroud)
输出:假设数组中有 200 个作业。
count | status
120 | failed
80 | completed
Run Code Online (Sandbox Code Playgroud)
其次,如果我能够获得任务失败的唯一原因列表,那就太好了。
输入:
`<some-command> -j 885881`
Run Code Online (Sandbox Code Playgroud)
输出:
count | reason
80 | OUT_OF_MEMORY
40 | TIMED_OUT
Run Code Online (Sandbox Code Playgroud)
我相信sacct可以利用命令以某种方式获得这些结果,但不确定如何实现。
使用这样的单行,您可以同时获取这两种信息
$ sacct -n -X -j 885881 -o state%20 | sort | uniq -c
16 COMPLETED
99 FAILED
32 OUT_OF_MEMORY
1 PENDING
Run Code Online (Sandbox Code Playgroud)
该sacct命令深入挖掘记帐信息。这些-n -X参数用于简化输出并减少不必要的行数,并且该-o参数仅请求显示 STATE 列。然后输出被送入sort和uniq命令进行计数。
如果您确实需要两个单独的命令,您可以轻松地调整上面的一行。您可以将其设为脚本或 Bash 函数以方便使用。
如果您想要更详细的解决方案,您可以查看smanage和atools