User Tools

Site Tools


tracking_batch_jobs

Tracking Batch Jobs

In any busy IT/IS shop, there are usually “a lot” of batch jobs queued for various scheduled and event-driven times. It can be a challenge to track them all, to check on them to see if:

  • Each job has run when it's supposed to…
  • Jobs are queued and holding for the appropriate time of day, week or month (usually with the /AFTER=datetime qualifier)…
  • Jobs that have failed and should be restarted…
  • Jobs that have failed and resubmitted themselves…
  • Jobs that are currently executing, or in a stalled, aborting, suspended or other state…

Since many shops have an excess (usually, far too many) batch (and printer) queues, doing the command:

$ SHOW QUEUE /ALL /FULL

just generates a huge list of text to search through visually… finding what you're looking for can be either a challenge or an exercise in futility. And it doesn't help that, in this area at least, the design of the SHOW QUEUE command's output (done back in the early days of VMS) is pretty messy, unorganized and difficult to comprehend.

A Helpful Solution

Take a look at the SHOW QUEUE command's /BY_JOB_STATUS qualifier. It produces output which is filtered by job-status category, i.e., EXECUTING, HOLDING, PENDING, RETAINED or TIMED_RELEASE. And, of course, you can specify a queue by name to further limit/filter the output.

So, for example, to see what's running (EXECUTING) right now in batch:

$ SHOW QUEUE /BY_JOB_STATUS=EXECUTING SYS$BATCH
Batch queue SYS$BATCH, idle, on POPEYE::
  /BASE_PRIORITY=4 /JOB_LIMIT=1 /OWNER=[1,4] /PROTECTION=(S:M,O:D,G:R,W:RS) /RETAIN=ERROR

  Entry  Jobname         Username             Status
  -----  -------         --------             ------
    385  FTP_TO_QBRANCH  JBOND                EXECUTING

Or, to see full details on all jobs set to run at specific days-&-times (distinct from pending and holding jobs – see the help text):

$ SHOW QUEUE /ALL /FULL /BY_JOB_STATUS=TIMED_RELEASE
Batch queue SYS$BATCH, idle, on POPEYE::
  /BASE_PRIORITY=4 /JOB_LIMIT=1 /OWNER=[1,4] /PROTECTION=(S:M,O:D,G:R,W:RS) /RETAIN=ERROR

  Entry  Jobname         Username             Status
  -----  -------         --------             ------
   9794  FTP_TO_CHAOS    MSMART               Holding until 13-FEB-2019 22:30:00.00
         Submitted 13-FEB-2019 08:08:09.61 /KEEP
         /NOPRINT /PRIORITY=50
         File: _DSA2:[MSMART.TOPSECRET.SCRIPTS]FTP_TO_CHAOS.COM;13

  ...  (lots more output, redacted) ...

Use the /FULL qualifier to chase down what DCL command file (script) is actually submitted for each particular batch job; omit that qualifier for a more concise listing.

Make a Command Symbol

Here's a handy command symbol to make this SHOW QUEUE /BY_JOB_STATUS command easier to type and use:

$ QSTAT*US == "SHOW QUEUE /BATCH /ALL /BY_JOB_STATUS="

Be sure that the qualifier /BY_JOB_STATUS= appears last in this command alias, so that you can use it like this:

$ qstat exec
... or
$ qstat hold /FULL   ! the /FULL qualifier works fine after the "hold" for /BY_JOB_STATUS=
... or even
$ qstat (hold,pending) /FULL

There… Makes checking on your batch jobs a bit easier, eh?

tracking_batch_jobs.txt · Last modified: 2019/02/13 23:29 by lricker

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki