有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何检查特定Java程序是否使用Windows CMD运行?

如果我的电脑上正在运行某个Java程序,我如何通过CMD查找?我进去的时候

tasklist | find "javaw"

在命令行中,我可以看到有多少javaw。exe文件被执行,但我不能指定哪个“javaw.exe”属于哪个特殊的Java程序。如何知道我的“XY.class”当前是否正在运行


共 (2) 个答案

  1. # 1 楼答案

    正如这里提到的https://superuser.com/questions/415360/how-do-i-find-out-command-line-arguments-of-a-running-program

    您也可以使用Windows的WMI服务,而无需Process Explorer。从命令提示符下运行以下命令:

    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"
    
  2. # 2 楼答案

    你可以下载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,根据任务的窗口标题搜索任务

    tasklist /V /FI "Your Java App Service"
    

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

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