Как мы можем остановить запущенный Java-процесс с помощью Windows cmd?
Я новичок в cmd, поэтому, пожалуйста, позвольте мне задать глупый вопрос: как мы можем остановить запущенный Java-процесс с помощью Windows cmd?
Например, если мы запустим Jetty (мини-веб-сервер) со следующей командой:
start javaw -jar start.jar
Как мы можем найти процесс и остановить его позже?
Очевидно, что следующая команда не работает:
stop javaw -jar start.jar
Ответы
Ответ 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