web-dev-qa-db-ja.com

Windowsで実行中のJavaプロセスのプロセスIDを見つける方法は?そして、プロセスを単独で殺す方法は?

Linuxのように、Windowsで特定のJavaプロセスを強制終了します(ps -auxでprocessidを取得し、kill processidでプロセスを強制終了します)。

26
Muthu Kumar

JRE に含まれるjpsユーティリティを使用して、JavaプロセスのプロセスIDを見つけることができます。出力には、実行可能JARファイルの名前またはメインクラスの名前が表示されます。

次に、Windowsタスクマネージャを使用してプロセスを終了します。コマンドラインでそれをしたい場合は、

TASKKILL /PID %PID%
33
Ingo Kegel

また、タスクマネージャでJavaプログラムのPIDを見つけることができます。[〜#〜] pid [〜#〜]およびコマンドライン columns View -> Select Columnsそして、適切なプロセスを見つけることができます。

結果は次のようになります。 enter image description here

13
cete3

これは、jarのインスタンスが複数実行されている場合でも機能します

wmic Path win32_process Where "CommandLine Like '%yourname.jar%'" Call Terminate
7

私が見つけた解決策は非常に簡単です。 WindowのWMICとJavaのランタイムを使用して、プロセスを見つけて強制終了します。

パート1:アプリのスタートアップコマンドラインに何らかの識別子を配置する必要があります。例えば。何かのようなもの:

String id = "com.domain.app";

パート2:アプリを実行するときは、必ず文字列を含めてください。 Java内から起動するとしましょう。次のようにします。

Runtime.getRuntime().exec(
   "C:\...\javaw.exe -cp ... -Dwhatever=" + id + " com.domain.app.Main"
);

パート3:プロセスを強制終了するには、WindowのWMICを使用します。上記のIDを含むアプリが開始されたことを確認してください:

Runtime.getRuntime().exec(
  "wmic process Where \"CommandLine Like '%" + id + "%'\" Call Terminate"
);
2
noblemaster

Windows XP以降では、すべてのプロセスIDをリストするコマンドtasklistがあります。

Windowsでプロセスを強制終了するには、以下を参照してください。

Windowsでプロセスを強制終了する|スタックオーバーフロー

JavaでOSコマンドを実行できます:

Runtime.getRuntime().exec("your command here");

コマンドの出力を処理する必要がある場合は、例を参照してください。 JavaでRuntime.exec()を使用

1
heikkim

これはWindowsに固有です。特定のJavaプログラムを強制終了する必要があるという同じ問題に直面していました。Javaプログラムを実行すると、tasklistはイメージ名をJava.exeとして設定しますが、taskkill /F Java.exeを使用してそれを強制終了すると、他のすべてのJava不要なアプリケーション以外のアプリケーション)が停止します。

だから私は同じJavaプログラムを使用して実行します:

start "MyProgramName" Java java-program..

ここでstartコマンドは新しいウィンドウを開き、ウィンドウのタイトルをMyProgramNameに設定してJavaプログラムを実行します。

このJavaプログラムを強制終了するには、次のtaskkillコマンドを使用します。

taskkill /fi "MyProgramName"

Javaプログラムは強制終了されるだけです。残りは影響を受けません。

0
elite21