web-dev-qa-db-fra.com

Comment pouvons-nous arrêter un processus Java en cours d'exécution via Windows cmd?

Je suis un débutant dans cmd, alors permettez-moi de poser une question stupide: Comment pouvons-nous arrêter un processus Java en cours d'exécution via Windows cmd?

Par exemple, si nous démarrons Jetty (un mini serveur Web) avec la commande suivante:

start javaw -jar start.jar

Comment pouvons-nous trouver le processus et l'arrêter plus tard?

De toute évidence, la commande suivante ne fonctionne pas:

stop javaw -jar start.jar
21
Winston Chen

C'est plutôt compliqué, mais vous devez faire quelque chose comme ceci:

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%

Trouvé ceci sur cette page .

(Ce genre de chose est beaucoup plus facile si vous avez un système UNIX/LINUX ... ou si vous utilisez Cygwin ou similaire sous Windows.)

11
Stephen C

Lorsque j'ai exécuté taskkill pour arrêter le processus javaw.exe, il indiquait qu'il était terminé mais restait en cours d'exécution. Le processus jqs (Java qucikstart) doit également être arrêté. L'exécution de ce fichier de traitement a résolu le problème.

taskkill /f /im jqs.exe
taskkill /f /im javaw.exe
taskkill /f /im Java.exe
35
Tup

J'aime celui la.

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

Vous pouvez réellement tuer un processus sur une machine distante de la même manière.

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

wmic est génial!

21
rojo

Normalement, je n'ai pas beaucoup de processus Java ouverts, donc

taskkill /im javaw.exe

ou

taskkill /im Java.exe

devrait suffire. Cela va tuer toutes instances de Java, cependant.

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 - remplacez-le par la classe principale de votre application (vous pouvez le trouver dans la deuxième colonne du résultat jps -l)

2
vneste

Au cas où vous ne souhaitez pas tuer tous les processus Java, mais des fichiers JAR spécifiques en cours d'exécution Cela fonctionnera également pour plusieurs pots. 

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

Sinon taskkill /im Java.exe fonctionnera pour tuer tous les processus Java

1
Vinaykumar Patel

démarrer javaw -DSTOP.PORT = 8079 -DSTOP.KEY = secret -jar start.jar

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

1
ffoooo

Vous pouvez le faire avec PowerShell:

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

La commande taskkill fermera gracieusement l'application.

0
Rosberg Linhares

(sous Windows OS sans service) Exemple de démarrage/arrêt de Spring Spring. 

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