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