как мы можем остановить работающий процесс java через windows cmd?

<p>я новичок в cmd, поэтому позвольте мне задать глупый вопрос: как мы можем остановить работающий процесс java через windows cmd?</p><p>например, если мы запустим jetty (мини-веб-сервер) с помощью следующей команды:</p><pre><code>start javaw -jar start.jar </code></pre><p>как нам найти процесс и остановить его позже?</p><p>очевидно, что следующая команда не работает:</p><pre><code>stop javaw -jar start.jar </code></pre>

<p>это довольно грязно, но вам нужно сделать что-то вроде следующего:</p><pre><code>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% </code></pre><p>нашел это на <a href="http://it.toolbox.com/blogs/database-solutions/kill-a-process-in-windows-bat-19875">на этой странице</a> .</p><p>(подобные вещи намного проще, если у вас система unix/linux ... или если вы используете cygwin или аналогичный в windows.)</p>

<p>когда я запускал taskkill, чтобы остановить процесс javaw.exe, он говорил, что он завершен, но продолжает работать. процесс jqs (java qucikstart) также необходимо остановить. запуск этого командного файла решил проблему.</p><pre><code>taskkill /f /im jqs.exe taskkill /f /im javaw.exe taskkill /f /im java.exe </code></pre>

<p>мне нравится этот.</p><pre><code>wmic process where "name like '%java%'" delete </code></pre><p>вы можете фактически убить процесс на удаленной машине таким же образом.</p><pre><code>wmic /node:computername /user:adminuser /password:password process where "name like '%java%'" delete </code></pre><p>wmic это круто!</p>

<p>обычно у меня не так много открытых процессов java</p><pre><code>taskkill /im javaw.exe </code></pre><p>или же</p><pre><code>taskkill /im java.exe </code></pre><p>должно хватить. это убьет<em> все </em>экземпляры java, хотя.</p>

<pre><code>for /f "tokens=1,2 delims= " %%g in ('jps -l') do if %%h==name.for.the.application.main.class taskkill /f /pid %%g </code></pre><p><code>name.for.the.application.main.class</code> - замените это на основной класс вашего приложения (вы можете найти его во втором столбце вывода <code>jps -l</code>)</p>

<p>в случае, если вы хотите уничтожить не все процессы java, а конкретные запущенные jar-файлы. это будет работать и для нескольких банок. </p><pre><code>wmic path win32\_process where "commandline like '%yourjarname.jar%'" call terminate </code></pre><p>иначе <code>taskkill /im java.exe</code> будет работать, чтобы убить все процессы java</p>

<p>start javaw -dstop.port = 8079 -dstop.key = secret -jar start.jar</p><p>start javaw -dstop.port = 8079 -dstop.key = секрет -jar start.jar --stop</p>

<p>вы можете сделать это с помощью powershell:</p><pre><code>$process = start-process "javaw" "-jar start.jar" -passthru taskkill /pid $process.id </code></pre><p>команда <code>taskkill</code> изящно закроет приложение.</p>

<p>(в ос windows без службы) образец запуска/остановки spring boot. </p><p><strong> run.bat </strong></p><pre><code>@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 </code></pre><p><strong> start.bat </strong></p><pre><code>@echo off call run.bat start </code></pre><p><strong> stop.bat: </strong></p><pre><code>@echo off call run.bat stop </code></pre>