【问题标题】:How to get an SGE job state如何获得 SGE 工作状态
【发布时间】:2016-10-31 18:06:47
【问题描述】:

这可能是一个非常简单的问题,但如果我有作业 ID,我将如何获取通过 SGE 提交的作业的状态?我基本上是想检查一个作业 ID,看看它是否处于错误状态、是否仍在运行或已完成。

我在想这样的事情

qstat -u '*' | grep 123456

但如果作业 ID 较低,它可能会返回我想要的行之外的行。并使用这样的命令...

qstat -j '123456'

...似乎没有返回作业状态。

【问题讨论】:

    标签: cluster-computing sungridengine


    【解决方案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>
    

    【讨论】:

      【解决方案2】:

      我已迁移到 Torque/Maui,因此解决方案可能不适合 GridEngine。

      对于使用qstatgrep 尝试基于单词的搜索:

      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
      

      【讨论】:

      • -f 选项似乎不起作用。它给出了一个错误,即 jobID 是一个无效的选项。不过,它可以像 qstat -j 一样正常工作。我正在使用 SGE 8.1.8
      • 确实如此。我将其改回以使用 -j 选项。
      • 似乎对于我的 qstat 版本,使用 -j 选项时它不会返回 job_state 值。
      • 你能发布示例输出吗?此外,您可以使用不同的标志更改输出格式。请参阅gridscheduler.sourceforge.net/htmlman/htmlman1/qstat.html 的输出格式部分。
      【解决方案3】:

      让你的正则表达式更具体:

      qstat | grep "^123456\s"
      

      这样你只会得到整个工作编号是你指定的工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-01
        • 1970-01-01
        • 2020-01-23
        • 1970-01-01
        • 1970-01-01
        • 2016-05-13
        • 1970-01-01
        相关资源
        最近更新 更多