qstat and long job names

后端 未结 9 1653
[愿得一人]
[愿得一人] 2021-01-31 08:23

How can I get qstat to give me full job names?

I know qstat -r gives detailed information about the task, but it\'s too much and the resource r

9条回答
  •  無奈伤痛
    2021-01-31 08:44

    This script works pretty well. It looks like it is from cambridge. http://www.hep.ph.ic.ac.uk/~dbauer/grid/myqstat.py

    For Python 3:

    #!/usr/bin/python
    import xml.dom.minidom
    import os
    import sys
    import string    
    
    f=os.popen('qstat -u \* -xml -r')
    
    dom=xml.dom.minidom.parse(f)
    
    
    jobs=dom.getElementsByTagName('job_info')
    run=jobs[0]
    
    runjobs=run.getElementsByTagName('job_list')
    
    
    def fakeqstat(joblist):
        for r in joblist:
            try:
                jobname=r.getElementsByTagName('JB_name')[0].childNodes[0].data
                jobown=r.getElementsByTagName('JB_owner')[0].childNodes[0].data
                jobstate=r.getElementsByTagName('state')[0].childNodes[0].data
                jobnum=r.getElementsByTagName('JB_job_number')[0].childNodes[0].data
                jobtime='not set'
                if(jobstate=='r'):
                    jobtime=r.getElementsByTagName('JAT_start_time')[0].childNodes[0].data
                elif(jobstate=='dt'):
                    jobtime=r.getElementsByTagName('JAT_start_time')[0].childNodes[0].data
                else:
                    jobtime=r.getElementsByTagName('JB_submission_time')[0].childNodes[0].data
    
                print(jobnum, '\t', jobown.ljust(16), '\t', jobname.ljust(16),'\t', jobstate,'\t',jobtime)
            except Exception as e:
                print(e)
    
    fakeqstat(runjobs)
    

    For Python 2:

    #!/usr/bin/python
    import xml.dom.minidom
    import os
    import sys
    import string
    #import re
    
    
    f=os.popen('qstat -u \* -xml -r')
    
    dom=xml.dom.minidom.parse(f)
    
    
    jobs=dom.getElementsByTagName('job_info')
    run=jobs[0]
    
    runjobs=run.getElementsByTagName('job_list')
    
    
    def fakeqstat(joblist):
            for r in joblist:
                    jobname=r.getElementsByTagName('JB_name')[0].childNodes[0].data
                    jobown=r.getElementsByTagName('JB_owner')[0].childNodes[0].data
                    jobstate=r.getElementsByTagName('state')[0].childNodes[0].data
                    jobnum=r.getElementsByTagName('JB_job_number')[0].childNodes[0].data
                    jobtime='not set'
                    if(jobstate=='r'):
                            jobtime=r.getElementsByTagName('JAT_start_time')[0].childNodes[0].data
                    elif(jobstate=='dt'):
                            jobtime=r.getElementsByTagName('JAT_start_time')[0].childNodes[0].data
                    else:
                            jobtime=r.getElementsByTagName('JB_submission_time')[0].childNodes[0].data
    
    
    
                    print  jobnum, '\t', jobown.ljust(16), '\t', jobname.ljust(16),'\t', jobstate,'\t',jobtime
    
    
    fakeqstat(runjobs)
    

提交回复
热议问题