type=page
status=published
title=list-batch-jobs
next=list-batch-job-steps.html
prev=list-batch-job-executions.html
~~~~~~

= list-batch-jobs

[[list-batch-jobs-1]][[GSRFM861]][[list-batch-jobs]]

== list-batch-jobs

Lists batch jobs

[[sthref1348]]

=== Synopsis

[source]
----
asadmin [asadmin-options] list-batch-jobs [--help]
[--target target]
[--long={false|true}]
[--output output]
[--header={false|true}]
[job_name]
----

[[sthref1349]]

=== Description

The `list-batch-jobs` subcommand lists batch jobs and job details.

[[sthref1350]]

=== Options

asadmin-options::
  Options for the `asadmin` utility. For information about these
  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
`--help`::
`-?`::
  Displays the help text for the subcommand.
`--target`::
  Specifies the target for which to list batch jobs and job details.
  Valid values are as follows:

  `server`;;
    Lists batch jobs for the default server instance `server` and is the
    default value.
  cluster-name;;
    Lists batch jobs for every server instance in the cluster.
  instance-name;;
    Lists batch jobs for a particular server instance.

`--long`::
`-l`::
  Displays detailed information about batch jobs. The default value is `false`.
`--output`::
`-o`::
  Displays specific details about batch jobs. Use a comma-separated list
  to specify the details to display and their order. The values are
  case-insensitive. The `jobname` and `instancecount` column headings
  are displayed by default. +
  Possible values are as follows:

  `jobname`;;
    Displays the name of the job.
  `appname`;;
    Displays the name of the application.
  `instancecount`;;
    Displays the number of job instances.
  `instanceid`;;
    Displays the ID assigned to the job instance.
  `executionid`;;
    Displays the ID assigned to the execution of the batch job. A new
    execution is created the first time a job is started and every time
    the existing execution is restarted.
  `batchstatus`;;
    Displays the status of the job as set by the batch runtime.
  `starttime`;;
    Displays the start time of the job.
  `endtime`;;
    Displays the finish time of the job.
  `exitstatus`;;
    Displays the status of the job as set by the Job XML for the job or
    by the batch application. By default, the exit status and the batch
    status are the same unless the exit status is explicitly overridden.

`--header`::
`-h`::
  Specifies whether column headings are displayed when the `--long`
  option is used. The default value is `true`. To suppress the headings,
  set the `--header` option to `false`.

[[sthref1351]]

=== Operands

job_name::
  The name of the job for which to list details.

[[sthref1352]]

=== Examples

[[GSRFM862]][[sthref1353]]

==== Example 1   Listing Batch Jobs

This example lists batch jobs for the default server instance.

[source]
----
asadmin> list-batch-jobs
JOBNAME  INSTANCECOUNT
payroll  9
bonus    6
Command list-batch-jobs executed successfully.
----

[[sthref1354]]

=== Exit Status

0::
  subcommand executed successfully
1::
  error in executing the subcommand

[[sthref1355]]

=== See Also

link:asadmin.html#asadmin-1m[`asadmin`(1M)]

link:list-batch-job-executions.html#list-batch-job-executions-1[`list-batch-job-executions`(1)],
link:list-batch-job-steps.html#list-batch-job-steps-1[`list-batch-job-steps`(1)],
link:list-batch-runtime-configuration.html#list-batch-runtime-configuration-1[`list-batch-runtime-configuration`(1)],
link:set-batch-runtime-configuration.html#set-batch-runtime-configuration-1[`set-batch-runtime-configuration`(1)]


