如何检查特定Java程序是否与Windows CMD一起运行?

时间:2016-12-13 10:23:34

标签: java windows cmd

如果我的电脑上运行某个Java程序,如何通过CMD查找?当我进入

tasklist | find "javaw"

进入命令行,我可以看到执行了多少个javaw.exe文件,但是我无法分配哪个“javaw.exe”属于哪个特殊的Java程序。我怎么知道我的“XY.class”当前是否正在运行?

2 个答案:

答案 0 :(得分:1)

如此处所述https://superuser.com/questions/415360/how-do-i-find-out-command-line-arguments-of-a-running-program

您可以在没有Process Explorer的情况下使用Windows' WMI服务。从命令提示符运行以下命令:

WMIC path win32_process get Caption,Processid,Commandline

如果要将输出转储到文件中(使其更容易阅读),请使用/ OUTPUT开关:

WMIC /OUTPUT:C:\Process.txt path win32_process get Caption,Processid,Commandline

如果你安装了unix工具/ git-scm,你可以grep输出。

这也有用

WMIC path win32_process get Caption,Processid,Commandline | find "java"

答案 1 :(得分:0)

您可以下载Sysinternal's Process Explorer。它是一个比Windows自己的经理更强大的任务管理器。 其中一个功能是您可以看到每个进程正在使用的所有资源(如注册表项,硬盘目录,命名管道等)。因此,浏览每个java.exe进程所拥有的资源可能会帮助您确定要杀死的资源。我通常会通过查找使用某个日志文件目录的那个来找到它。

enter image description here enter image description here

您还可以使用JRE中包含的JPS实用程序来查找Java进程的进程ID。 JPS工具现在包含在JDK / bin目录中。我还建议使用-l选项,它输出应用程序主类的完整包名,这可能会有所帮助。 输出将显示可执行JAR文件的名称或主类的名称。

然后使用Windows任务管理器终止该过程。如果要在命令行上执行此操作,请使用

TASKKILL /PID %PID%

通过taskkill,您可以使用过滤器基于窗口标题终止进程。

taskkill `/F /FI` "Your Java App Service" /T

/F - force task kill
/T - Kill child process
/FI - Filter the tasks

如果窗口标题中包含引号,则可以使用反斜杠(\)来转义嵌套引号。

此外,您可以以类似的方式使用任务列表,根据窗口标题搜索任务。

tasklist /V /FI "Your Java App Service"

您可以使用*作为通配符来匹配模式

tasklist /V /FI "Your Java App S*"