Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过Windows cmd停止正在运行的java进程?_Java_Windows_Batch File_Cmd - Fatal编程技术网

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

如何通过Windows cmd停止正在运行的java进程?,java,windows,batch-file,cmd,Java,Windows,Batch File,Cmd,我是cmd的新手,所以请允许我问一个愚蠢的问题:我们如何通过WindowsCMD停止运行Java进程 例如,如果我们使用以下命令启动Jetty(小型web服务器): start javaw -jar start.jar 我们如何找到过程并在以后停止它 显然,以下命令不起作用: stop javaw -jar start.jar 这相当混乱,但您需要执行以下操作: START "do something window" dir FOR /F "tokens=2" %I in ('TASKLIS

我是cmd的新手,所以请允许我问一个愚蠢的问题:我们如何通过WindowsCMD停止运行Java进程

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

start javaw -jar start.jar
我们如何找到过程并在以后停止它

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

stop javaw -jar start.jar

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

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%
我发现这件衣服


(如果你有一个UNIX/LINUX系统,或者如果你在Windows上运行Cygwin或类似的系统,这种事情就容易多了。)

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

taskkill /im javaw.exe

应该足够了。不过,这将杀死所有Java实例

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

当我运行taskkill停止javaw.exe进程时,它会说它已终止,但仍在运行。jqs进程(javaquckstart)也需要停止。运行此批处理文件解决了该问题

taskkill /f /im jqs.exe
taskkill /f /im javaw.exe
taskkill /f /im java.exe
我喜欢这个

wmic process where "name like '%java%'" delete
实际上,您可以用同样的方法终止远程计算机上的进程

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

wmic太棒了

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


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

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

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

taskkill
命令将关闭应用程序。

以防您不想杀死所有java进程,而是想杀死正在运行的特定JAR。它也适用于多个罐子

wmic Path win32_process Where "CommandLine Like '%YourJarName.jar%'" Call Terminate
Else
taskkill/im java.exe
将用于终止所有java进程

(在不提供服务的Windows操作系统上)Spring启动/停止示例

跑步。蝙蝠

@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
start.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
@ECHO OFF
call run.bat start
停止。蝙蝠:

@ECHO OFF
call run.bat stop
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\

打开windows命令。 首先列出所有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>


答案是类似于
taskkill/f/im java.exe
的东西可能会起作用,但是如果你想只杀死一个java进程而不是全部,我可以建议在窗口标题的帮助下这样做。示例:

开始
start“MyProgram”C:/Program Files/Java/jre1.8.0\u 201/bin/Java.exe“-jar MyProgram.jar

停止
taskkill/F/FI“WINDOWTITLE eq MyProgram”/T

您是否尝试过
Ctrl+C
Ctrl+Break
?是的,但我是否可以构建一个.bat文件来用Ctrl+C或Ctrl+Break停止它?可能检查taskkill命令。它有许多选择要终止的进程的选项:按进程id、按名称模式、按拥有用户等。但我建议首先寻找一种标准的、不太激烈的方法来关闭特定的应用程序(服务器通常有某种“停止”命令),您知道进程名称吗?如果您这样做,您可以使用taskkill命令构建一个.bat文件:(例如,
taskkill/im notepad.exe
)。嘿,伙计们,谢谢大家,但我不能投票支持你们,也不能在这里标出正确答案。如果你们不介意的话,请回答。PowerShell也让这个问题变得微不足道。如果您想杀死所有java.exe进程:
taskkill/F/IM java.exe/t
。如上所述,感谢我在别处重用的
for
循环:)工作得很好,但如何使它在批处理文件中工作?@Xerus语法应该是相同的。我能想到的唯一区别是,您可能需要将
where
子句中的百分号加倍:
where“name like%%java%%”
以将文字百分号指定为WQL通配符,因此,您的批处理脚本不会尝试将
%java%
扩展为批处理变量。@Xerus您可能应该发布一个新问题,并说明上下文中发生了什么。谢谢,它对我起到了作用。
C:\Users\tk>taskkill /F /PID 15176 
SUCCESS: The process with PID 15176 has been terminated.