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