4

私はJavaでWindows732ビットを持っています:

Windows 7でコマンドラインからプロセスのPIDを取得するにはどうすればよいですか?

実行したコマンドラインでしか識別できないアプリケーションを強制終了したい。そのマシンで実行されているJavaアプリケーションがいくつかあります。特定のものを止める必要があります。

正確には、によって実行されるtomcatを見つける必要がありますcatalina.bat。これを行うための最良の方法は何だと思いますか?

tasklistは知っていますが、プロセスを開始したコマンドラインを照会できないようです。見つけることjava.exeは私を助けません。Windows用のpgrep/pkillのような便利なものを検索しようとしましたが、成功しませんでした。

4

5 に答える 5

8

コマンドを使用jps -lvして、コマンドラインオプションでJavaプロセスを決定できます。jpsは、多くの最新のJDKに含まれているユーティリティです。

于 2012-07-27T10:10:08.923 に答える
3

コマンドプロンプトで試してください:

sc queryex type= service state= all | find "APP"

ここで、APPはプログラムの名前です。このコマンドは、それに一致するすべてのサービスを返します。

次に実行するSC QUERYEX APPと、状態とPID番号が返されます。

PIDを取得したら:

TASKKILL /f /pid ###

ここで、###は実際のPIDです

于 2013-08-01T19:17:07.887 に答える
3

Java、Windowsで現在実行中のプロセスのPIDを取得します

これは、、、、およびHotSpotJVMで機能するはずですLinuxOSXWindows

import sun.management.VMManagement;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

public static int getCurrentPID() {
    try{
        java.lang.management.RuntimeMXBean runtime = 
            java.lang.management.ManagementFactory.getRuntimeMXBean();
        java.lang.reflect.Field jvm = runtime.getClass().getDeclaredField("jvm");
        jvm.setAccessible(true);
        sun.management.VMManagement mgmt = 
           (sun.management.VMManagement) jvm.get(runtime);
        java.lang.reflect.Method pid_method = 
            mgmt.getClass().getDeclaredMethod("getProcessId");
        pid_method.setAccessible(true);
        return (Integer) pid_method.invoke(mgmt);
    }
    catch(Exception e){
        e.printStackTrace();
        System.out.println("Failed at getting the process ID");
        System.exit(0);
    }
}

次のように呼び出します。

System.out.println("PID: " + getCurrentPID());

私の場合、processIDを出力します。PID: 5728

出典:

Javaプログラムはどのようにして独自のプロセスIDを取得できますか?

http://boxysystems.com/index.php/java-tip-find-process-id-of-running-java-process/

于 2013-08-01T19:46:35.707 に答える
1

Javaアプリケーションから特定のTomcatを強制終了する必要がある場合は、各Tomcat内で実行されている単純なサーブレットをコーディングして、それを識別する文字列を使用してgetリクエストに応答します。次に、別のサーブレットを使用して次のようなものを実行します。

System.exit(-1);
于 2012-07-27T10:04:54.810 に答える
0

ついに何かを見つけました。私のために機能するソリューションは、wmic(Windows Management Instrumentation Commandline)と呼ばれます。この優れたツールは、Windows 7 Pro(私のもの)および場合によっては他のWindowsバージョンに組み込まれています。実行中のすべてのタスクを、想像できるすべての詳細(対応するコマンドラインなど)、さまざまなハードウェア情報などとともに一覧表示するなど、非常に多様なアクションを提供します。まさに私が必要としているものです。

于 2012-08-01T14:52:31.743 に答える