Ich bin ein Neuling in cmd, erlauben Sie mir also bitte, eine dumme Frage zu stellen: Wie können wir einen laufenden Java-Prozess über Windows cmd stoppen?
Wenn wir beispielsweise Jetty (einen Mini-Webserver) mit dem folgenden Befehl starten:
start javaw -jar start.jar
Wie finden wir den Prozess und stoppen ihn später?
Offensichtlich funktioniert der folgende Befehl nicht:
stop javaw -jar start.jar
Es ist ziemlich unordentlich, aber Sie müssen etwas wie das Folgende tun:
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%
Fand dies auf dieser Seite .
(Diese Art der Dinge ist viel einfacher, wenn Sie ein UNIX/LINUX-System haben ... oder wenn Sie Cygwin oder ähnliches unter Windows ausführen.)
Wenn ich Taskkill ausgeführt habe, um den Prozess "javaw.exe" zu stoppen, würde er sagen, dass er beendet wurde, aber weiterhin ausgeführt wurde. Der jqs-Prozess (Java qucikstart) muss ebenfalls gestoppt werden. Durch Ausführen dieser Batchdatei wurde das Problem behoben.
taskkill /f /im jqs.exe
taskkill /f /im javaw.exe
taskkill /f /im Java.exe
Ich mag diesen.
wmic process where "name like '%Java%'" delete
Sie können einen Prozess auf einer Remote-Maschine auf die gleiche Weise beenden.
wmic /node:computername /user:adminuser /password:password process where "name like '%Java%'" delete
wmic ist super!
Normalerweise habe ich nicht so viele Java-Prozesse geöffnet
taskkill /im javaw.exe
oder
taskkill /im Java.exe
sollte ausreichen Dadurch werden jedoch all -Instanzen von Java beendet.
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
- Ersetzen Sie dies durch die Hauptklasse Ihrer Anwendung (in der zweiten Spalte der jps -l
-Ausgabe).
Öffnen Sie das Windows-Cmd. Listen Sie zuerst alle Java Prozesse,
jps -m
jetzt den Namen holen und den folgenden Befehl ausführen,
for /f "tokens=1" %i in ('jps -m ^| find "Name_of_the_process"') do ( taskkill /F /PID %i )
oder töten Sie einfach die Prozess-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\
und
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.
oder
C:\Users\tk>taskkill /F /PID 15176
SUCCESS: The process with PID 15176 has been terminated.
Für den Fall, dass Sie nicht alle Java-Prozesse beenden möchten, sondern die aktiven Gläser angeben. Es funktioniert auch für mehrere Gläser.
wmic Path win32_process Where "CommandLine Like '%YourJarName.jar%'" Call Terminate
Andernfalls funktioniert taskkill /im Java.exe
, um alle Java-Prozesse zu beenden
starten Sie javaw -DSTOP.PORT = 8079 -DSTOP.KEY = secret -jar start.jar
start Javaw -DSTOP.PORT = 8079 -DSTOP.KEY = Geheimnis -Jar Start.Jar --Stop
Die Antwort, die etwas nahe legt wie taskkill /f /im Java.exe
wird wahrscheinlich funktionieren, aber wenn Sie nur einen Java process anstelle von allem töten wollen, kann ich vorschlagen, dies mit Hilfe von window) zu tun Titel. Beispiel:
start "MyProgram" "C:/Program Files/Java/jre1.8.0_201/bin/Java.exe" -jar MyProgram.jar
taskkill /F /FI "WINDOWTITLE eq MyProgram" /T
Sie können dies mit PowerShell tun:
$process = Start-Process "javaw" "-jar start.jar" -PassThru
taskkill /pid $process.Id
Der Befehl taskkill
schließt die Anwendung ordnungsgemäß.
(unter Windows ohne Service) Spring Boot Start/Stopp-Beispiel.
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