如何从 SGE 获取失败的作业列表

fiv*_*nts 2 jobs sungridengine

如何从 SGE 获取(最近)失败的作业列表(failed=100 或 exit_status=137)?从qacct帮助:

[-j [job_id|job_name|pattern]]    list all [matching] jobs
Run Code Online (Sandbox Code Playgroud)

如何使用模式?我尝试了以下方法,不起作用。

qacct  -j failed=100
Run Code Online (Sandbox Code Playgroud)

zer*_*uid 5

在这种情况下,“模式”指的是一个简单的通配符表达式来匹配作业名称,例如 qacct -j 'myjob*'

qacct不幸的是,没有您正在寻找的过滤功能 - 可以过滤复杂的工作属性,但不能过滤诸如exit_status或 之类的基本属性failed

您只需做一点工作就可以从 SGE 会计文件中检索该信息(假设您可以访问它)。当 SGE 完成一项工作时,它会写出一个简单的记录$SGE_ROOT/$SGE_CELL/common/accounting- 这是qacct读取的文件。您需要查看accounting(5)qmaster 上的手册页以了解特定于您的 GridEngine 版本的详细信息,但您的会计文件中的作业记录应该或多或少如下所示:

all.q:myexechost:group:user:myjobstep16:1126971:sge:0:1369755166:1369768897:1369769771:0:0:874:796.564903:30.676336:15788.000000:0:0:0:0:17009:2:0:47987400.000000:34033048:0:0:0:9468:27604:NONE:defaultdepartment:NONE:1:0:827.241239:96.445328:39.111400:-q all.q:0.000000:NONE:237133824.000000:0:0
Run Code Online (Sandbox Code Playgroud)

在此特定记录中,failed 和 exit_status 分别是第 12 和第 13 个字段。对于快速而肮脏的“最近失败”列表,我们可以将它们与字段 6(作业 ID)和 11(作业结束时间)一起使用,以显示最近 100 个作业中的任何失败:

$ cut -d':' -f6,11,12,13 $SGE_ROOT/$SGE_CELL/common/accounting|sort -t':' -k2|tail -100|grep ':100:137'
Run Code Online (Sandbox Code Playgroud)