代码之家  ›  专栏  ›  技术社区  ›  Winston Chen

如何通过Windows CMD停止正在运行的Java进程?

  •  21
  • Winston Chen  · 技术社区  · 15 年前

    我是CMD中的新手,请允许我问一个愚蠢的问题:我们怎样才能阻止通过Windows CMD运行一个Java进程?

    例如,如果我们使用以下命令启动Jetty(小型Web服务器):

    start javaw -jar start.jar
    

    我们如何找到这个过程并稍后停止它?

    显然,以下命令不起作用:

    stop javaw -jar start.jar
    
    9 回复  |  直到 7 年前
        1
  •  11
  •   Stephen C    15 年前

    这相当混乱,但您需要执行以下操作:

    START "do something window" dir
    FOR /F "tokens=2" %I in ('TASKLIST /NH /FI "WINDOWTITLE eq do something window"' ) DO SET PID=%I
    ECHO %PID%
    TASKKILL /PID %PID%
    

    发现了这个 this page .

    (如果你有一个unix/linux系统,这种事情就容易多了…或者在Windows上运行cygwin或类似的程序。)

        2
  •  35
  •   Tup    13 年前

    当我运行taskkill来停止javaw.exe进程时,它会说它已终止,但仍在运行。JQS进程(JavaQuikKSTART)也需要停止。运行这个批处理文件可以解决这个问题。

    taskkill /f /im jqs.exe
    taskkill /f /im javaw.exe
    taskkill /f /im java.exe
    
        3
  •  21
  •   rojo    12 年前

    我喜欢这个。

    wmic process where "name like '%java%'" delete
    

    实际上,您可以用同样的方法杀死远程机器上的进程。

    wmic /node:computername /user:adminuser /password:password process where "name like '%java%'" delete
    

    WMIC太棒了!

        4
  •  8
  •   Joey Gumbo    15 年前

    通常我没有这么多Java进程打开

    taskkill /im javaw.exe
    

    taskkill /im java.exe
    

    就够了。这会杀死 全部的 不过,Java的实例。

        5
  •  2
  •   Mykola Novik vneste    8 年前
    FOR /F "tokens=1,2 delims= " %%G IN ('jps -l') DO IF %%H==name.for.the.application.main.Class taskkill /F /PID %%G
    

    name.for.the.application.main.Class -将其替换为应用程序的主类(可以在 jps -l 输出)

        6
  •  1
  •   ffoooo    12 年前

    启动javaw-dstop.port=8079-dstop.key=secret-jar start.jar

    start javaw-dstop.port=8079-dstop.key=secret-jar start.jar--stop

        7
  •  1
  •   Vinaykumar Patel    8 年前

    如果您想杀死不是所有的Java进程,而是SPECUR JAR运行。它也适用于多个罐子。

    wmic Path win32_process Where "CommandLine Like '%YourJarName.jar%'" Call Terminate
    

    否则 taskkill /im java.exe 将杀死所有Java进程

        8
  •  0
  •   Rosberg Linhares    8 年前

    您可以使用PowerShell执行此操作:

    $process = Start-Process "javaw" "-jar start.jar" -PassThru
    taskkill /pid $process.Id
    

    这个 taskkill 命令将优雅地关闭应用程序。

        9
  •  0
  •   Stéphane GRILLON    7 年前

    (在没有服务的Windows操作系统上)弹簧启动/停止示例。

    批处理文件

    @ECHO OFF
    IF "%1"=="start" (
        ECHO start your app name
        start "yourappname" java -jar -Dspring.profiles.active=prod yourappname-0.0.1.jar
    ) ELSE IF "%1"=="stop" (
        ECHO stop your app name
        TASKKILL /FI "WINDOWTITLE eq yourappname"
    ) ELSE (
        ECHO please, use "run.bat start" or "run.bat stop"
    )
    pause
    

    批处理

    @ECHO OFF
    call run.bat start
    

    蝙蝠:

    @ECHO OFF
    call run.bat stop