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