这可能是一个非常简单的问题,但如果我有工作ID,我如何获得通过SGE提交的工作状态?我基本上想检查一个工作ID,看看它是否处于错误状态,它是否仍然在运行,或者它已经完成。
我在想这样的事情
qstat -j '123456'
但是如果作业ID很低,它可能会返回除我想要的行以外的行。并使用这样的命令...
{{1}}
...似乎没有返回工作状态。
答案 0 :(得分:1)
发出命令:
qstat -xml
结果将采用XML格式。您可以解析结果并提取状态:
<job_list state="pending">
<JB_job_number>3150728</JB_job_number>
<JAT_prio>0.00000</JAT_prio>
<JB_name>snpReference</JB_name>
<JB_owner>me</JB_owner>
<state>hqw</state>
<JB_submission_time>2016-11-23T11:54:01</JB_submission_time>
<queue_name></queue_name>
<jclass_name></jclass_name>
<slots>1</slots>
</job_list>
答案 1 :(得分:0)
我已迁移到Torque / Maui,因此GridEngine的解决方案可能不准确。
使用qstat
和grep
尝试使用基于字词的搜索:
qstat -u '*' | grep -w 123456
或者,使用awk
qstat -u '*' | awk '$1 == 123456 { print }'
对于Toque / Maui,我可以使用qstat -f $jobid
获取作业状态:
qstat -f 123456 | grep job_state
也许您可以使用-j
选项执行类似操作:
qstat -j $job_id | grep job_state
答案 2 :(得分:0)
让你的正则表达式更具体:
qstat | grep "^123456\s"
这样你只会获得整个工作号码是你指定的工作。