如果我的电脑上运行某个Java程序,如何通过CMD查找?当我进入
tasklist | find "javaw"
进入命令行,我可以看到执行了多少个javaw.exe文件,但是我无法分配哪个“javaw.exe”属于哪个特殊的Java程序。我怎么知道我的“XY.class”当前是否正在运行?
答案 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进程所拥有的资源可能会帮助您确定要杀死的资源。我通常会通过查找使用某个日志文件目录的那个来找到它。
您还可以使用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*"