Java - 在Windows 7中通过命令行获取外部进程的PID

时间:2012-07-27 09:51:48

标签: java command-line pid

我使用Java 7 32位Windows:

如何在Windows 7中通过命令行获取进程的PID?

我想杀死一个我只能通过运行它的命令行真正识别的应用程序。我们在该计算机上运行了几个Java应用程序。我需要停止特定的。

确切地说:我需要找到由catalina.bat运行的tomcat。您认为最好的方法是什么?

我知道tasklist,但它似乎无法查询启动进程的命令行。查找java.exe对我没有帮助。我尝试在Windows上搜索像pgrep / pkill这样有用的东西,但没有成功。

5 个答案:

答案 0 :(得分:8)

您可以使用jps -lv命令通过命令行选项确定java进程。 jps是包含在许多最新JDK中的实用程序。

答案 1 :(得分:3)

尝试命令提示符:

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

APP是程序的名称。此命令将返回与该匹配的所有服务。

然后你可以运行SC QUERYEX APP,它将返回状态和PID号。

获得PID后:

TASKKILL /f /pid ###

其中###是实际PID

答案 2 :(得分:3)

Java,获取Windows中当前正在运行的进程的PID

这适用于LinuxOSXWindows和HotSpot JVM。

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

来源:

How can a Java program get its own process ID?

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

答案 3 :(得分:1)

如果你只需要从java应用程序中杀死一个特定的tomcat,为什么不编写一个在每个tomcat中运行的简单servlet,它将响应一个带有识别它的字符串的get请求。然后使用另一个servlet执行类似的操作:

System.exit(-1);

答案 4 :(得分:0)

终于找到了一些东西。为我工作的解决方案称为wmic(Windows Management Instrumentation Commandline)。这个漂亮的工具内置于Windows 7 Pro(我的)以及其他Windows版本。它提供了各种各样的操作,例如列出所有正在运行的任务以及您可以想象的每个细节(如相应的命令行),各种硬件信息等。正是我需要的。