jpsの使い方を学んでいます。このページはjpsです。Javaのlvmidとは何ですか?
lvmidは、オペレーティングシステムのJVMプロセスのプロセス識別子ですが、必ずしもそうである必要はありません。
私は、どのような状況でjpsがオペレーティングシステムのプロセス識別子ではないのでしょうか?
誰でもお手伝いしますか?
jpsの使い方を学んでいます。このページはjpsです。Javaのlvmidとは何ですか?
lvmidは、オペレーティングシステムのJVMプロセスのプロセス識別子ですが、必ずしもそうである必要はありません。
私は、どのような状況でjpsがオペレーティングシステムのプロセス識別子ではないのでしょうか?
誰でもお手伝いしますか?
すべてのオペレーティングシステムに「プロセスID」という概念がありますか?そうでないかもしれない。それらの中には、整数ではなく完全に異なる形式のプロセスIDを表すものもあります。プロセスIDはプラットフォーム固有の概念であり、将来変更される可能性があります。 Javaはプラットフォームに依存しないように設計されています。これが、常に機能するとは限らない理由です。
現在、現在使用されている主要なオペレーティングシステムでは、lvmid
は常にJVMプロセスのオペレーティングシステムのプロセスIDを返す必要があります。
lvmidは通常、O/S pid(プロセスID)と同じですが、同じである必要はありません。オペレーティングシステムの中には、それらを区別するものがあります(私にはわからない)。
CygWin上で動作するJavaプロセスとネイティブLinuxマシン上で動作するJavaプロセスが、pidとは異なるlvmidを持つことが発見されました。これにより、私のスクリプトはlvmidを検索して、間違ったpidを渡していたことでJavaプロセスを停止させました。
あなたは私のpicから見ることができるように、lvmidはは6704ですが、pidは19248
ですが、この質問に答えるためにありがとうございます。あなたの答えは意味をなさないと思います。 – khotyn
もっと情報がありたいですし、どのオペレーティングシステムで 'lvmid'が' pid'にマッチすることが保証されていますか? Reasonは、Javaで実行中のバックグラウンドサービスを開始および停止するスクリプトです.pidをフェッチする必要があり、classpath宣言が長すぎるため 'ps 'コマンドでルックアップすることができますが、' jps'を使用して 'pid'を得ることができます。 ( 'lvmid <> pid' !!!を除いて)動作することが保証されています。 – ADTC