Comment Pouvons-nous arrêter un processus java en cours d'exécution à travers Windows cmd?
je suis un internaute novice dans cmd, alors permettez-moi de poser une question stupide: Comment Pouvons-nous arrêter un processus Java en cours d'exécution à travers cmd Windows?
par exemple, si nous démarrons Jetty (un mini serveur web) avec la commande suivante:
start javaw -jar start.jar
Comment trouver le processus et l'arrêter plus tard?
Évidemment, la commande suivante ne fonctionne pas:
stop javaw -jar start.jar
9 réponses
C'est plutôt compliqué, mais vous avez besoin de faire quelque chose comme ce qui suit:
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 sur Windows.)
quand j'ai couru taskkill pour arrêter la javaw.exe processus, il serait de dire qu'il avait mis fin, mais est resté en cours d'exécution. Le processus jqs (java qucikstart) doit également être arrêté. L'exécution de ce fichier batch a pris en charge le problème.
taskkill /f /im jqs.exe
taskkill /f /im javaw.exe
taskkill /f /im java.exe
j'aime celui-ci.
wmic process where "name like '%java%'" delete
Vous pouvez réellement tuer un processus sur une machine distante de la même façon.
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 tuera 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 ceci dans la classe principale de votre application (vous pouvez le trouver dans la deuxième colonne de jps -l
sortie)
start javaw-DSTOP.PORT=8079-DSTOP.Clé=démarrage du bocal secret.jar
start javaw-DSTOP.PORT=8079-DSTOP.Clé=démarrage du bocal secret.jar -- stop
dans le cas où vous voulez tuer non pas tous les processus java mais les jars spécif en cours d'exécution. Ça marchera aussi pour plusieurs pots.
wmic Path win32_process Where "CommandLine Like '%YourJarName.jar%'" Call Terminate
Else taskkill /im java.exe
travail à tuer tous les processus java
Vous pouvez faire cela avec PowerShell:
$process = Start-Process "javaw" "-jar start.jar" -PassThru
taskkill /pid $process.Id
taskkill
la commande fermera gracieusement l'application.
(sur Windows OS sans Service) Exemple de démarrage/arrêt à ressort.
exécuter.chauve-souris
@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
démarrer.chauve-souris
@ECHO OFF
call run.bat start
arrêter.chauve-souris:
@ECHO OFF
call run.bat stop