webentwicklung-frage-antwort-db.com.de

Wie können wir einen laufenden Java-Prozess über Windows cmd stoppen?

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
21
Winston Chen

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.)

11
Stephen C

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
35
Tup

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!

21
rojo

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.

8
Joey
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).

2
vneste

Ö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.
1
tk_

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

1

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

start Javaw -DSTOP.PORT = 8079 -DSTOP.KEY = Geheimnis -Jar Start.Jar --Stop

1
ffoooo

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:

Anfang

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

Halt

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

0
FloPinguin

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äß.

0

(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
0
sgrillon