2010-04-15 170 views
18

我是cmd的新手,所以請允許我問一個愚蠢的問題:我們如何通過Windows cmd阻止正在運行的Java進程?我們如何通過Windows cmd阻止正在運行的java進程?

例如,如果我們開始碼頭(一個小型​​web服務器),用下面的命令:

start javaw -jar start.jar 

我們如何發現的過程,後來停止了嗎?

顯然,下面的命令不起作用:

stop javaw -jar start.jar 
+4

你嘗試'按Ctrl + C'或' Ctrl + Break'? – 2010-04-15 09:00:03

+0

是的,但我可以用Ctrl + C或Ctrl + Break建立一個.bat文件來停止它嗎? – 2010-04-15 09:05:38

+2

也許檢查taskkill命令。它有很多選擇殺死進程的選項:按進程ID,按名稱模式,擁有用戶等。 但我建議首先尋找一種標準的,不太暴力的關閉特定應用程序的方式(服務器通常有某種類型「stop」命令) – 2010-04-15 09:10:40

回答

9

這是相當混亂,但你需要做類似如下:

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% 

發現這個上this page

(這種事情是容易得多,如果你有一個UNIX/LINUX系統...或者如果您運行的Cygwin或Windows類似。)

+0

PowerShell也使這個微不足道。 – Joey 2010-04-18 08:39:19

+1

如果你想殺死* all * java.exe進程:'taskkill/F/IM java.exe/T'。因此,說,感謝'FOR'循環,我在其他地方重複使用:) – Benj 2015-08-19 09:14:44

8

通常我不會有那麼多的Java進程打開,以便

taskkill /im javaw.exe 

taskkill /im java.exe 

應該足夠了。儘管如此,這將會殺死所有的實例。

+2

'taskkill/f/im java.exe'在我的情況。感謝您的回答! – lordmegamax 2016-08-15 12:00:58

2
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輸出的第二列)

28

當我跑的taskkill停止javaw.exe進程它會說,它已經終止,但仍然在運行。 jqs進程(java qucikstart)也需要停止。運行這個批處理文件處理了這個問題。

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

我喜歡這一個。

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

實際上,你可以殺了同樣的方式在遠程計算機上的進程。

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

wmic太棒了!

+0

很好地工作,但我怎樣才能讓它在批處理文件中工作? – Xerus 2017-12-14 22:03:35

+0

@Xerus語法應該相同。我能想到的唯一區別是,您可能需要將'where'子句中的百分號加倍:'where'名稱像'%% java %%'「'來指定文字百分號作爲WQL通配符,因此您的批處理腳本不會嘗試將'%java%'擴展爲批變量。 – rojo 2017-12-15 04:45:24

+0

@Xerus你可能應該發佈一個新問題,並在上​​下文中顯示發生了什麼。 – rojo 2017-12-15 19:57:32

1

開始javaw進程-DSTOP.PORT = 8079 -DSTOP.KEY =祕密的罐子start.jar

開始javaw進程-DSTOP.PORT = 8079 -DSTOP.KEY =祕密的罐子start.jar --stop

0

您可以使用PowerShell做到這一點:

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

taskkill命令將正常關閉應用程序。

0

如果你想殺死並非所有的java進程,但特定的罐子運行。它也適用於多個罐子。

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

否則taskkill /im java.exe將努力殺死所有Java進程

0

(在Windows操作系統沒有Service)春季啓動啓動/停止樣品。

的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 
相關問題