type=page
status=published
title=stop-instance
next=stop-local-instance.html
prev=stop-domain.html
~~~~~~
stop-instance
=============

[[stop-instance-1]][[GSRFM00241]][[stop-instance]]

stop-instance
-------------

stops a running \{product---name} instance

[[sthref2173]]

Synopsis

[source,oac_no_warn]
----
asadmin [asadmin-options] stop-instance [--help] 
[--force={false|true}] [--kill={false|true}]
instance-name
----

[[sthref2174]]

Description

The `stop-instance` subcommand stops a running \{product---name}
instance.

The subcommand can stop any \{product---name} instance, regardless of
how the instance was created. For example, this subcommand can stop an
instance that was created by using the
link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)]
subcommand.

This command is supported in remote mode only.

[[sthref2175]]

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.
`--force`::
  Specifies whether the instance is forcibly stopped immediately. +
  Possible values are as follows: +
  `true`;;
    The instance is forcibly stopped immediately (default).
  `false`;;
    The subcommand waits until all threads that are associated with the
    instance are exited before stopping the instance.
`--kill`::
  Specifies whether the instance is killed by using functionality of the
  operating system to terminate the instance process. +
  Possible values are as follows: +
  `false`;;
    The instance is not killed. The subcommand uses functionality of the
    Java platform to terminate the instance process (default).
  `true`;;
    The instance is killed. The subcommand uses functionality of the
    operating system to terminate the instance process.

[[sthref2176]]

Operands

instance-name::
  This is the name of the \{product---name} instance to stop.

[[sthref2177]]

Examples

This example stops the \{product---name} instance `yml-i-sj01`.

[[GSRFM767]][[sthref2178]]

Example 1   Stopping a \{product---name} Instance

[source,oac_no_warn]
----
asadmin> stop-instance yml-i-sj01
The instance, yml-i-sj01, was stopped.

Command stop-instance executed successfully.
----

[[sthref2179]]

Exit Status

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

[[sthref2180]]

See Also

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

link:create-instance.html#create-instance-1[`create-instance`(1)],
link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)],
link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
link:start-domain.html#start-domain-1[`start-domain`(1)],
link:start-instance.html#start-instance-1[`start-instance`(1)],
link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)],
link:stop-domain.html#stop-domain-1[`stop-domain`(1)],
link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)]


