4

我有带有 Java 的 Windows 7 32 位:

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

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

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

我知道任务列表,但它似乎无法查询启动进程的命令行。寻找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

这应该适用于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

资料来源:

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 内部运行的简单 servlet,该 servlet 将使用一个可以识别它的字符串来响应 get 请求。然后使用另一个 servlet 执行类似的操作:

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

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

于 2012-08-01T14:52:31.743 回答