How can we stop a running java process through Windows cmd?
I am a newbie in cmd, so please allow me to ask a stupid question: How can we stop a running Java process through Windows cmd?
For example, if we st开发者_高级运维art Jetty (a mini web server) with the following command:
start javaw -jar start.jar
How do we find the process and stop it later?
Obviously the following command does not work:
stop javaw -jar start.jar
When I ran taskkill to stop the javaw.exe process it would say it had terminated but remained running. The jqs process (java qucikstart) needs to be stopped also. Running this batch file took care of the issue.
taskkill /f /im jqs.exe
taskkill /f /im javaw.exe
taskkill /f /im java.exe
I like this one.
wmic process where "name like '%java%'" delete
You can actually kill a process on a remote machine the same way.
wmic /node:computername /user:adminuser /password:password process where "name like '%java%'" delete
wmic is awesome!
Open the windows cmd. First list all the java processes,
jps -m
now get the name and run below command,
for /f "tokens=1" %i in ('jps -m ^| find "Name_of_the_process"') do ( taskkill /F /PID %i )
or simply kill the process ID
taskkill /F /PID <ProcessID>
sample :)
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\
and
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.
or
C:\Users\tk>taskkill /F /PID 15176
SUCCESS: The process with PID 15176 has been terminated.
Normally I don't have that many Java processes open so
taskkill /im javaw.exe
or
taskkill /im java.exe
should suffice. This will kill all instances of Java, though.
It is rather messy but you need to do something like the following:
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%
Found this on this page. (archived)
(This kind of thing is much easier if you have a UNIX / LINUX system ... or if you run Cygwin or similar on Windows.)
In case you want to kill not all java processes but specif jars running. It will work for multiple jars as well.
wmic Path win32_process Where "CommandLine Like '%YourJarName.jar%'" Call Terminate
Else taskkill /im java.exe
will work to kill all java processes
The answer which suggests something like taskkill /f /im java.exe
will probably work, but if you want to kill only one java process instead of all, I can suggest doing it with the help of window titles. Expample:
Start
start "MyProgram" "C:/Program Files/Java/jre1.8.0_201/bin/java.exe" -jar MyProgram.jar
Stop
taskkill /F /FI "WINDOWTITLE eq MyProgram" /T
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
- replace this to your application's main class (you can find it in second column of jps -l
output)
You can do this with PowerShell:
$process = Start-Process "javaw" "-jar start.jar" -PassThru
taskkill /pid $process.Id
The taskkill
command will graceful close the application.
(on Windows OS without Service) Spring Boot start/stop sample.
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
This command can run from Windows Command Prompt
Kill a Java Process with PID
netstat -ano | findstr :java
taskkill /PID <ProcessID_From_Previous_Command> /F
精彩评论