Подтвердить что ты не робот

Как мы можем остановить запущенный Java-процесс с помощью Windows cmd?

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

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

start javaw -jar start.jar

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

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

stop javaw -jar start.jar
4b9b3361

Ответ 1

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

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

Ответ 2

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

taskkill /f /im jqs.exe
taskkill /f /im javaw.exe
taskkill /f /im java.exe

Ответ 3

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

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

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

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

wmic потрясающе!

Ответ 4

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

taskkill /im javaw.exe

или

taskkill /im java.exe

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

Ответ 5

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)

Ответ 6

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

jps -m

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

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

или просто убить идентификатор процесса

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.

Ответ 7

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

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

Ответ 8

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

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

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

Ответ 9

Если вы хотите убить не все java-процессы, но указать запущенные jars. Он будет работать и для нескольких банок.

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

Else taskkill /im java.exe будет работать, чтобы убить все java-процессы

Ответ 10

(в ОС Windows без службы) 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

Ответ 11

Ответ, который предполагает что-то вроде 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