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

= list-batch-job-steps

[[list-batch-job-steps-1]][[GSRFM895]][[list-batch-job-steps]]

== list-batch-job-steps

Lists steps for a specific batch job execution

[[sthref1356]]

=== Synopsis

[source]
----
asadmin [asadmin-options] list-batch-job-steps [--help]
[--long={false|true}]
[--target target]
[--output output]
[--header={false|true}]
execution_id
----

[[sthref1357]]

=== Description

The `list-batch-job-steps` subcommand lists steps for a specific batch
job execution.

[[sthref1358]]

=== 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 job steps. Valid values
  are as follows:

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

`--long`::
`-l`::
  Displays detailed information about batch job steps. The default value
  is `false`.
`--output`::
`-o`::
  Displays specific details about batch job steps. Use a comma-separated
  list to specify the details to display and their order. The values are
  case-insensitive. A subset of all possible headings is displayed by
  default. Possible values are as follows:

  `stepname`;;
    Displays the name of the step.
  `stepid`;;
    Displays the step ID.
  `starttime`;;
    Displays the start time of the step.
  `endtime`;;
    Displays the finish time of the step.
  `batchstatus`;;
    Displays the status of the step as set by the batch runtime.
  `exitstatus`;;
    Displays the status of the step 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.
  `stepmetrics`;;
    Displays metrics for the step.
  `value`;;
    Displays a value for each step metric. The value represents the
    number of items read, written, committed, and so on.

`--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`.

[[sthref1359]]

=== Operands

execution_id::
  The ID of the execution for which to list batch job steps and details.

[[sthref1360]]

=== Examples

[[GSRFM896]][[sthref1361]]

==== Example 1   Listing Batch Job Steps

This example lists batch job steps and specific step details for a job
execution with the execution ID of `7`. The target is the default server
instance.

Some lines of output are omitted from this example for readability.

[source]
----
asadmin> list-batch-job-steps o=stepname,stepid,batchstatus,stepmetrics 7
STEPNAME   STEPID   BATCHSTATUS   STEPMETRICS
prepare    7        COMPLETED     METRICNAME          VALUE
                                  READ_COUNT          8
                                  WRITE_COUNT         8
                                  PROCESS_SKIP_COUNT  0
process    8        COMPLETED     METRICNAME          VALUE
                                  READ_COUNT          8
                                  WRITE_COUNT         8
                                  PROCESS_SKIP_COUNT  0
...
Command list-batch-job-steps executed successfully.
----

[[sthref1362]]

=== Exit Status

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

[[sthref1363]]

=== See Also

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

link:list-batch-jobs.html#list-batch-jobs-1[`list-batch-jobs`(1)],
link:list-batch-job-executions.html#list-batch-job-executions-1[`list-batch-job-executions`(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)]


