2016-01-22 44 views
4

我需要創建自動腳本,該腳本會殺死特定Java JAR的運行進程。僅殺死特定Java jar的進程(實例)

我手動做這樣的:

jps -v 

6753 Jps 
4573 myJarToKill.jar 
4574 notMyJarToKill.jar 
4576 myJarToKill.jar 

我拿起根據例如myJarToKill.jar JAR名特定流程和運行要殺死他們。

kill 4573 4576 

是否有可能通過像這樣的grep或sth來獲取這個進程的數量?通過它來殺死命令?

+0

你可以grep的罐子名稱,並使用SED只得到數(刪除行的其餘部分),然後做一個for循環調用殺死每個號碼 –

+0

瞭解[GNU awk](https://www.gnu.org/software/gawk/) –

回答

1

使用的命令是grep的組合,awk和xargs的UNIX命令:

jps -v | grep "<your file name>" | grep -v "<if you need to exclude other output>" |awk '{print $<field number>}'|xargs kill -<kill signal> 

之前執行它,請閱讀以下說明:

首先,運行以下命令: JPS -v | grep「myJarToKill.jar」| AWK '{打印$ 1}'

注: $2意味着ps輸出在空間上分離的場分裂。 因此,當您第一次運行該命令時,請檢查awk '{print $2}'輸出是否是預期結果,否則您應該將字段編號$2更改爲您需要的值。

如果 「notMyJarToKill.jar」 仍然存在補充一點:

jps -v | grep "myJarToKill.jar" | grep -v "notMyJarToKill.jar"| awk '{print $1}' 

則輸出結果中包含,你會殺了你可以運行該

jps -v | grep "myJarToKill.jar" | awk '{print $1}'|xargs kill -9 
的PID

注意:您也可以使用kill -TERM它取決於您的需求。

問候 克勞迪奧

0
kill `jps -v |grep myJarToKill|cut -f1 -d " "` 

cut -f1 -d " "是提取第一個「列」的部分。 `執行中的命令並將結果作爲殺死參數。