Как мы можем остановить запущенный процесс Java через Windows cmd? - PullRequest
24 голосов
/ 15 апреля 2010

Я новичок в cmd, поэтому позвольте мне задать глупый вопрос: как мы можем остановить запущенный процесс Java через Windows cmd?

Например, если мы запустим Jetty (мини-веб-сервер) с помощью следующей команды:

start javaw -jar start.jar

Как нам найти процесс и остановить его позже?

Очевидно, что следующая команда не работает:

stop javaw -jar start.jar

Ответы [ 11 ]

40 голосов
/ 17 октября 2011

Когда я запускал taskkill, чтобы остановить процесс javaw.exe, он говорил, что он завершен, но продолжает работать. Процесс jqs (java qucikstart) также необходимо остановить. Запуск этого пакетного файла решил проблему.

taskkill /f /im jqs.exe
taskkill /f /im javaw.exe
taskkill /f /im java.exe
22 голосов
/ 15 февраля 2013

Мне нравится этот.

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

Фактически вы можете уничтожить процесс на удаленной машине тем же способом.

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

wmic - это круто!

11 голосов
/ 15 апреля 2010

Это довольно грязно, но вам нужно сделать что-то вроде следующего:

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%

Нашел на на этой странице .

(Подобные вещи намного проще, если у вас система UNIX / LINUX ... или если вы используете Cygwin или аналогичный в Windows.)

8 голосов
/ 18 апреля 2010

Обычно у меня не так много открытых процессов Java, поэтому

taskkill /im javaw.exe

или

taskkill /im java.exe

должно хватить. Однако это убьет всех экземпляров Java.

1 голос
/ 22 марта 2019

Открыть окно cmd. Сначала перечислите все процессы Java,

jps -m

теперь получите имя и выполните команду ниже,

for /f "tokens=1" %i in ('jps -m ^| find "Name_of_the_process"') do ( taskkill /F /PID %i )

или просто убить ID процесса

taskkill /F /PID <ProcessID>

образец:)

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\

и

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.

или

C:\Users\tk>taskkill /F /PID 15176 
SUCCESS: The process with PID 15176 has been terminated.
1 голос
/ 26 августа 2011
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 - замените это на основной класс вашего приложения (вы можете найти его во втором столбце jps -l output)

0 голосов
/ 15 апреля 2019

Ответ, который предполагает что-то вроде taskkill /f /im java.exe, вероятно, будет работать, но если вы хотите убить только один процесс Java вместо всех, я могу предложить сделать это с помощью заголовков окон . Expample:

Начало

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

Стоп

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

0 голосов
/ 18 сентября 2017

(в ОС Windows без службы) Пример запуска / остановки Spring Boot.

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 голосов
/ 06 января 2017

В случае, если вы хотите уничтожить не все процессы Java, а указанные JAR-файлы Это будет работать и для нескольких банок.

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

Остальное taskkill /im java.exe будет работать для уничтожения всех процессов Java

0 голосов
/ 06 января 2017

Вы можете сделать это с помощью PowerShell:

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

Команда taskkill изящно закроет приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...