我们如何通过Windows cmd停止正在运行的java进程?

时间:2010-04-15 08:54:33

标签: java windows batch-file cmd

我是cmd中的新手,所以请允许我提出一个愚蠢的问题:如何通过Windows cmd停止正在运行的Java进程?

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

start javaw -jar start.jar

我们如何找到该流程并在以后停止?

显然以下命令不起作用:

stop javaw -jar start.jar

12 个答案:

答案 0 :(得分:38)

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

taskkill /f /im jqs.exe
taskkill /f /im javaw.exe
taskkill /f /im java.exe

答案 1 :(得分:22)

我喜欢这个。

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

您实际上可以用同样的方式终止远程计算机上的进程。

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

wmic太棒了!

答案 2 :(得分:11)

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

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或类似系统,这种情况要容易得多。)

答案 3 :(得分:8)

通常我没有那么多Java进程打开所以

taskkill /im javaw.exe

taskkill /im java.exe

应该足够了。但这会杀死所有 Java实例。

答案 4 :(得分:1)

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输出的第二列中找到它)

答案 5 :(得分:1)

打开Windows cmd。 首先列出所有Java进程,

jps -m

现在获取名称并在命令下运行

for /f "tokens=1" %i in ('jps -m ^| find "Name_of_the_process"') do ( taskkill /F /PID %i )

或干脆杀死进程ID

taskkill /F /PID <ProcessID>

样本:)

C:\Users\tk>jps -m
15176 MessagingMain
18072 SoapUI-5.4.0.exe
15164 Jps -m
3420 org.eclipse.equinox.launcher_1.3.201.v20161025-1711.jar -os win32 -ws win32 -arch x86_64 -showsplash -launcher C:\Users\tk\eclipse\jee-neon\eclipse\eclipse.exe -name Eclipse --launcher.library C:\Users\tk\.p2\pool\plugins\org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.401.v20161122-1740\eclipse_1617.dll -startup C:\Users\tk\eclipse\jee-neon\eclipse\\plugins/org.eclipse.equinox.launcher_1.3.201.v20161025-1711.jar --launcher.appendVmargs -exitdata 4b20_d0 -product org.eclipse.epp.package.jee.product -vm C:/Program Files/Java/jre1.8.0_131/bin/javaw.exe -vmargs -Dosgi.requiredJavaVersion=1.8 -XX:+UseG1GC -XX:+UseStringDeduplication -Dosgi.requiredJavaVersion=1.8 -Xms256m -Xmx1024m -Declipse.p2.max.threads=10 -Doomph.update.url=http://download.eclipse.org/oomph/updates/milestone/latest -Doomph.redirection.index.redirection=index:/->http://git.eclipse.org/c/oomph/org.eclipse.oomph.git/plain/setups/ -jar C:\Users\tk\

C:\Users\tk>for /f "tokens=1" %i in ('jps -m ^| find "MessagingMain"') do ( taskkill /F /PID %i )

C:\Users\tk>(taskkill /F /PID 15176  )
SUCCESS: The process with PID 15176 has been terminated.

C:\Users\tk>taskkill /F /PID 15176 
SUCCESS: The process with PID 15176 has been terminated.

答案 6 :(得分:0)

启动javaw -DSTOP.PORT = 8079 -DSTOP.KEY = secret -jar start.jar

启动javaw -DSTOP.PORT = 8079 -DSTOP.KEY = secret -jar start.jar --stop

答案 7 :(得分:0)

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

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

taskkill命令将正常关闭应用程序。

答案 8 :(得分:0)

如果您想要杀死所有java进程但是指定jars运行。它也适用于多个罐子。

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

否则taskkill /im java.exe将终止所有java进程

答案 9 :(得分:0)

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

<强>的run.bat

@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

<强>的start.bat

@ECHO OFF
call run.bat start

<强>的stop.bat:

@ECHO OFF
call run.bat stop

答案 10 :(得分:0)

提示类似taskkill /f /im java.exe之类的答案可能会起作用,但是如果您想杀死仅一个Java进程而不是全部,我建议在的帮助下进行>窗口标题。范例:

开始

start "MyProgram" "C:/Program Files/Java/jre1.8.0_201/bin/java.exe" -jar MyProgram.jar

停止

taskkill /F /FI "WINDOWTITLE eq MyProgram" /T

答案 11 :(得分:-1)

此命令可以从 Windows 命令提示符运行

使用 PID 杀死 Java 进程

netstat -ano | findstr :java
taskkill /PID <ProcessID_From_Previous_Command> /F