jps

jpsコマンドは、ターゲット・システム上で計測されたJVMをリストする場合に使用します。

形式

ノート:

このコマンドは試験的なものであり、サポート対象外になっています。

jps [-q] [-mlvV][hostid]
jps [-help]
-q

クラス名、JARファイル名およびmainメソッドに渡される引数の出力を抑制し、ローカルJVM識別子のみのリストを生成します。

-mlvV
  • -mは、mainメソッドに渡される引数を表示します。この出力は、組み込まれているJVMに対してnullになることもあります。

  • -lは、アプリケーションのmainクラスのフル・パッケージ名、またはアプリケーションのJARファイルへのフル・パス名を表示します。

  • -vは、JVMに渡される引数を表示します。

  • -Vは、クラス名、JARファイル名およびmainメソッドに渡される引数の出力を抑制し、ローカルJVM識別子のみのリストを生成します。

hostid

プロセス・レポートが生成されるホストの識別子。hostidには、通信プロトコル、ポート番号、実装に固有なその他のデータを指定したオプション・コンポーネントを含めることができます。「ホスト識別子」を参照してください。

-help

jpsコマンドのヘルプ・メッセージを表示します。

説明

jpsコマンドは、ターゲット・システム上で計測されたJava HotSpot VMを一覧表示します。このコマンドで表示できるレポート情報は、アクセス権を持ったJVMに関するものに限定されます。

ノート:

JDK 10で、Attach APIを使用して、別のDockerプロセスで実行されているJavaプロセスに接続するためのサポートが追加されました。ただし、jpsツールでは、別のDockerインスタンスで実行されているJVMプロセスを認識できません。Dockerコンテナ内の仮想マシンとLinuxホストの接続を試みる場合は、psなどのツールを使用してJVMのPIDを参照し、そのPIDを受け入れるツールのコマンド行にPIDを指定する必要があります。

hostidを指定せずにjpsコマンドを実行した場合、ローカル・ホストで計測されたJVMが検索されます。hostidを指定して起動した場合、指定されたプロトコルとポートを使用して、指定されたホスト上のJVMを検索します。jstatdプロセスがターゲット・ホスト上で実行されていると想定されます。

jpsコマンドは、ターゲット・システムで計測された各JVMについて、ローカルJVM識別子(lvmid)をレポートします。lvmidは、一般的にはJVMプロセスに対するオペレーティング・システムのプロセス識別子ですが、必ずしもそうであるとはかぎりません。オプションを指定しなかった場合、jpsコマンドは、各Javaアプリケーションのlvmidをリストした後に、そのアプリケーションのクラス名またはJARファイル名を簡単な形式でリストします。この簡単な形式のクラス名とJARファイル名では、クラスのパッケージ情報またはJARファイル・パス情報が省略されています。

jpsコマンドは、Java起動ツールを使用して、mainメソッドに渡されるクラス名と引数を検索します。カスタム・ランチャを使用してターゲットJVMを起動した場合、クラス名またはJARファイル名と、mainメソッドに渡される引数は使用できません。この場合、jpsコマンドは、クラス名またはJARファイル名と、mainメソッドへ渡される引数に対して、文字列Unknownを出力します。

jpsコマンドで生成されるJVMのリストは、このコマンドを実行するプリンシパルに与えられたアクセス権に基づき、制限される場合があります。このコマンドは、オペレーティング・システム独自のアクセス制御メカニズムによる決定に基づいて、プリンシパルにアクセス権が与えられているJVMのみをリストします。

ホスト識別子

ホスト識別子(hostid)は、ターゲット・システムを示す文字列です。hostid文字列の構文は、URIの構文に対応しています。

[protocol:][[//]hostname][:port][/servername]
protocol

通信プロトコルです。protocolが省略され、hostnameが指定されていない場合、デフォルトのプロトコルが、プラットフォーム固有の最適化されたローカル・プロトコルになります。プロトコルが省略され、ホスト名が指定されている場合は、デフォルト・プロトコルはrmiになります。

hostname

ターゲット・ホストを示すホスト名またはIPアドレスです。hostnameパラメータを省略した場合、ターゲット・ホストはローカル・ホストになります。

port

リモート・サーバーと通信するためのデフォルト・ポートです。hostnameパラメータが省略されているか、protocolパラメータで最適化されたローカル・プロトコルが指定されている場合、portパラメータは無視されます。そうでなければ、portパラメータの処理は実装によって異なります。デフォルトのrmiプロトコルの場合、portパラメータは、リモート・ホスト上のrmiregistryのポート番号を示します。portパラメータが省略され、protocolパラメータでrmiが指定されている場合、デフォルトのrmiregistryポート(1099)が使用されます。

servername

このパラメータの扱いは、実装によって異なります。最適化されたローカル・プロトコルの場合、このフィールドは無視されます。rmiプロトコルの場合、このパラメータは、リモート・ホスト上のRMIリモート・オブジェクトの名前を表す文字列になります。jstatdコマンドの-nオプションを参照してください。

jpsコマンドの出力形式

jpsコマンドの出力は、次のパターンに従います。

lvmid [ [ classname | JARfilename | "Unknown"] [ arg* ] [ jvmarg* ] ]

すべての出力トークンは空白で区切ります。arg値の中で空白を使用すると、実際の定位置パラメータに引数をマッピングしようとするときに、あいまいになります。

ノート:

将来のリリースでこの形式は変更される可能性があるため、jpsの出力を解析するスクリプトは作成しないことをお薦めします。jpsの出力を解析するスクリプトを作成する場合は、このツールの将来のリリースにより、そのスクリプトを変更する必要があることに留意してください。

この項では、jpsコマンドの使用例を示します。

ローカル・ホスト上で計測されたJVMを一覧表示する場合:

jps
18027 Java2Demo.JAR
18032 jps
18005 jstat

次の例は、リモート・ホスト上で計測されたJVMを一覧表示しています。この例では、jstatサーバーと、その内部RMIレジストリまたは別の外部rmiregistryプロセスのいずれかが、リモート・ホストのデフォルト・ポート(ポート1099)で実行されていると想定しています。また、ローカル・ホストが、リモート・ホストへの有効なアクセス権を持っていることも想定しています。この例には、-lオプションが含まれ、クラス名またはJARファイル名を詳細な形式で出力します。

jps -l remote.domain
3002 /opt/jdk1.7.0/demo/jfc/Java2D/Java2Demo.JAR
2857 sun.tools.jstatd.jstatd

次の例は、RMIレジストリにデフォルトではないポートを使用して、リモート・ホスト上で計測されたJVMをリストしています。この例では、内部RMIレジストリがポート2002にバインドされたjstatdサーバーが、リモート・ホスト上で稼働していると想定しています。また、-mオプションを使用して、一覧表示されたそれぞれのJavaアプリケーションのmainメソッドに渡される引数を組み込んでいます。

jps -m remote.domain:2002
3002 /opt/jdk1.7.0/demo/jfc/Java2D/Java2Demo.JAR
3102 sun.tools.jstatd.jstatd -p 2002