/[pdpsoft]/trunk/nl.biggrid.dans/job-status
ViewVC logotype

Diff of /trunk/nl.biggrid.dans/job-status

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2581 by svn, Tue Nov 20 12:05:55 2012 UTC revision 2582 by svn, Tue Nov 20 12:07:59 2012 UTC
# Line 7  then Line 7  then
7  fi  fi
8  . ${0%/*}/libdans.sh  . ${0%/*}/libdans.sh
9    
10  # Load global defaults (vars: vo, archive, LFC_*, SRM_*)  # Load global defaults (vars: vo, ARCHIVE, LFC_*, SRM_*)
11  loadDefaults $0  loadDefaults $0
12    
13  DEBUG=0  DEBUG=0
14  QUIET=0  QUIET=0
15  KEEPGOING=0  KEEPGOING=0
16    JOBID=0
17  START_INDEX=1  START_INDEX=1
18  END_INDEX=0  END_INDEX=0
19  USAGE="\  USAGE="\
20  $0 - check the status of all DANS '${ARCHIVE}' jobs in ${JOBDIR}  $0 - check the status of all DANS '${ARCHIVE}' jobs in ${JOBDIR}
21  Usage: ./job-status [-q|--quiet] [-d|--debug] [-k|--keepgoing] [--archive=archive]  Usage: ./job-status [-q|--quiet] [-d|--debug] [-k|--keepgoing] [--archive=archive]
22                      [--jobdir=dir] [--start=N] [--end=N]                      [--jobdir=dir] [--id=N] [--start=N] [--end=N]
23  Where:  Where:
24    --keepgoing        tells $0 to keep going after an error    --keepgoing        tells $0 to keep going after an error
25    --archive=archive  specifies the name of the archive (default='${ARCHIVE}')    --archive=archive  specifies the name of the archive (default='${ARCHIVE}')
26    --jobdir=dir       specifies the directory where the DANS jobs are stored    --jobdir=dir       specifies the directory where the DANS jobs are stored
27                       (default='${JOBDIR}')                       (default='${JOBDIR}')
28      --id=N             specifies the DANS job id
29    --start=N          specifies the starting DANS job id (default=1)    --start=N          specifies the starting DANS job id (default=1)
30    --end=N            specifies the end DANS job id (default=ALL)    --end=N            specifies the end DANS job id (default=ALL)
31  "  "
# Line 55  do Line 57  do
57                            ;;                            ;;
58          (--job-dir=*)     JOBDIR=${1##--job-dir=}          (--job-dir=*)     JOBDIR=${1##--job-dir=}
59                            ;;                            ;;
60            (--id)            JOBID=$2
61                              shift
62                              ;;
63            (--id=*)          JOBID=${1##--id=}
64                              ;;
65          (--start)         START_INDEX=$2          (--start)         START_INDEX=$2
66                            shift                            shift
67                            ;;                            ;;
# Line 85  fi Line 92  fi
92  lastdansjobid=`(cd  "${JOBDIR}"; ls -1dr [0-9][0-9][0-9][0-9][0-9] 2> /dev/null| head -1)`  lastdansjobid=`(cd  "${JOBDIR}"; ls -1dr [0-9][0-9][0-9][0-9][0-9] 2> /dev/null| head -1)`
93  if [ ${START_INDEX} -lt 1 -o ${START_INDEX} -gt ${lastdansjobid} ]  if [ ${START_INDEX} -lt 1 -o ${START_INDEX} -gt ${lastdansjobid} ]
94  then  then
95      START_INDEX=${lastdansjobid}      abort 2 "Invalid start job index specified!"
96  fi  fi
97  if [ ${END_INDEX} -lt 1 -o ${END_INDEX} -gt ${lastdansjobid} ]  if [ ${END_INDEX} -lt 1 -o ${END_INDEX} -gt ${lastdansjobid} ]
98  then  then
99        if [ ${END_INDEX} -ne 0 ]
100        then
101            warn "Invalid end job index specified, adjusting to ${lastdansjobid}"
102        fi  
103      END_INDEX=${lastdansjobid}      END_INDEX=${lastdansjobid}
104  fi  fi
105    if [ ${JOBID} -gt 0 ]
106    then
107        if [ ${JOBID} -le ${lastdansjobid} ]
108        then
109            START_INDEX=${JOBID}
110            END_INDEX=${JOBID}
111        else
112            abort 3 "Invalid DANS jobid '${JOBID}' specified!"
113        fi
114    fi
115    
116  # now check all known jobs  # now check all known jobs
117    numjobs=0
118  for jobid in `seq ${START_INDEX} ${END_INDEX}`  for jobid in `seq ${START_INDEX} ${END_INDEX}`
119  do  do
120      jobdir=`printf "${JOBDIR}/%05d" ${jobid}`      jobdir=`printf "${JOBDIR}/%05d" ${jobid}`
121    
122      if [ -r "${jobdir}/jobid" ]      if [ -r "${jobdir}/jobid" ]
123      then      then
124          debug "DANS-job ${jobdir} found"          debug "DANS-job ${jobdir##*/} found"
125          # check for a status file          # check for the *latest* status file
126          statusfile=`(cd "$jobdir"; ls -1 Status=* 2> /dev/null)`          statusfile=`(cd "$jobdir"; ls -1t Status=* 2> /dev/null | head -1)`
127          debug "  Status files: " $statusfile          debug "  Status files: " $statusfile
128          do_update=1          do_update=1
129          case "${statusfile}" in          status="${statusfile#Status=}"
130              (Status=Done)     debug "  Job finished"          case "${status}" in
131                                do_update=0              (Done)      debug "  Job finished"
132                                ;;                          do_update=0
133              (Status=Cleared)  debug "  Job output retrieved and cleared"                          ;;
134                                do_update=0              (Cleared)   debug "  Job output retrieved and cleared"
135                                ;;                          do_update=0
136              (Status=Aborted)  debug "  Job aborted!"                          ;;
137                                do_update=0              (Aborted)   debug "  Job aborted!"
138                                ;;                          do_update=0
139              (Status=Cancelled) debug "  Job canceled!"                          ;;
140                                do_update=0              (Cancelled) debug "  Job cancelled!"
141                                ;;                          do_update=0
142                            ;;
143          esac          esac
144    
145          if [ ${do_update} -eq 1 ]          if [ ${do_update} -eq 1 ]
146          then          then
147                let numjobs++
148              debug "  Updating job status"              debug "  Updating job status"
149              jobid=`cat "${jobdir}/jobid"`              jobid=`cat "${jobdir}/jobid"`
150              job_status=`glite-wms-job-status "${jobid}" 2> /dev/null`              job_status=`glite-wms-job-status "${jobid}" 2> /dev/null`
# Line 130  do Line 154  do
154                  if [ "x${new_status}" = "xDone" ]                  if [ "x${new_status}" = "xDone" ]
155                  then                  then
156                      exit_code=`echo "${job_status}" | sed -n 's/^Exit code: *\([0-9]*\).*/\1/p'`                      exit_code=`echo "${job_status}" | sed -n 's/^Exit code: *\([0-9]*\).*/\1/p'`
157                      printf "%s  %-60s  Status=%s (Exit code=%d)\n" ${jobdir} $jobid ${new_status} ${exit_code}                      printf "%s  %-60s  Status=%s (Exit code=%d)\n" ${jobdir##*/} $jobid ${new_status} ${exit_code}
158                                    
159                      # Retrieve the output for Done jobs                      # Retrieve the output for Done jobs
160                      echo "       Retrieving job output into ${JOBDIR}/${jobdir}/output"                      echo "       Retrieving job output into ${jobdir}/output"
161    
162                      glite-wms-job-output --noint --dir "${jobdir}/output" --logfile ${jobdir}/job-get-output.log "$jobid" > /dev/null 2>&1                      glite-wms-job-output --noint --dir "${jobdir}/output" --logfile ${jobdir}/job-get-output.log "$jobid" > /dev/null 2>&1
163                      if [ $? -eq 0 ]                      if [ $? -eq 0 ]
# Line 146  do Line 170  do
170                          warn "Could not retrieve job output!"                          warn "Could not retrieve job output!"
171                      fi                      fi
172                  else                  else
173                      printf "%s  %-60s  Status=%s\n" ${jobdir} $jobid ${new_status}                      printf "%s  %-60s  Status=%s\n" ${jobdir##*/} $jobid ${new_status}
174                  fi                  fi
175    
176                  if [ "x${new_status}" = "xDone" -o "x${new_status}" = "xAborted" -o "x${new_status}" = "xCancelled" ]                  if [ "x${new_status}" = "xDone" -o "x${new_status}" = "xAborted" -o "x${new_status}" = "xCancelled" ]
# Line 170  do Line 194  do
194      fi      fi
195  done  done
196    
197    if [ ${numjobs} -eq 0 ]
198    then
199        info "No jobs found!"
200    elif [ ${numjobs} -gt 1 ]
201    then
202        info "Found ${numjobs} DANS jobs"
203    fi
204    

Legend:
Removed from v.2581  
changed lines
  Added in v.2582

grid.support@nikhef.nl
ViewVC Help
Powered by ViewVC 1.1.28