2013-03-19 20 views
4

在Linux機器上,我最多運行3個java jar文件。我如何用一個命令快速殺死所有3個?如何在bash中快速殺死java進程?

通常我會:

PS前 - 讓進程運行

然後找到進程ID然後執行:

殺-9 #### #### ####

有什麼辦法縮短這個過程?我的眼睛因眯眼尋找過程標識而受到傷害。

我的腳本執行以下操作:

nohup ./start-gossip & 

nohup ./start & 

nohup ./start-admin & 

有沒有辦法讓每一個進程ID不看它呢?

+1

「斜視」 - 較大的字體。 – 2013-03-19 19:21:18

+0

字體足夠大,只要我使用「ps ex」 – iCodeLikeImDrunk 2013-03-19 19:24:31

回答

1

您可以在啓動過程時保存PID,以便稍後使用它們:

nohup ./start-gossip & 
START_GOSSIP_PID=$! 

nohup ./start & 
START_PID=$! 

nohup ./start-admin & 
START_ADMIN_PID=$! 

... 

kill -9 $START_GOSSIP_PID 
kill -9 $START_PID 
kill -9 $START_ADMIN_PID 

這樣做的優點是(不超過pkill)不會殺死任何其他巧合地具有相似名稱的進程。如果你不想執行從腳本本身kill操作,而只是想擁有的PID得心應手,其寫入文件(從腳本):

echo $START_GOSSIP_PID > /some/path/start_gossip.pid 

甚至你的時候只是這樣做啓動過程,而不是將PID保存到變量:

nohup ./start-gossip & 
echo $! > /some/path/start_gossip.pid 
+0

。早在2013年,newb程序員。這就是我現在使用的。當然,我將我的pid保存到/ tmp – iCodeLikeImDrunk 2016-10-17 14:59:26

13

簡短的回答:

pkill java 

這看起來一個進程(或者進程)的名字將其殺死。這也會發現其他java進程,所以要小心。它也接受,但你應該避免使用,除非真的損壞。

編輯:根據更新

,您可以指定腳本名稱pkill以及(我還不能肯定)。但是,處理這個問題的更傳統的方式是將pid文件留下。在你開始一個新的過程和背景之後,它的pid可以在$!中找到。如果你把這個pid寫到一個文件中,那麼很容易檢查這個進程是否仍在運行,並簡單地殺死你的進程。但是,有一些機會可以重新使用pid。

+0

這個看起來不錯,但是我想我必須小心謹慎,因爲它會殺死所有的java .. – iCodeLikeImDrunk 2013-03-19 19:11:43

+0

如果你不確定,有一個相應的'pgrep'命令,您可以使用它來首先查找pids。 – FatalError 2013-03-19 19:13:52

+0

真棒!你這是一種結合這些命令的方式嗎?像「kill -9 pgrep java」的東西?但後來我可以使用pkill命令..嗯... – iCodeLikeImDrunk 2013-03-19 19:19:47

-1

爲了讓你想殺死並運行

殺的人這一過程的是java程序運行

netstat的-tuplen

進程ID(PID)的進程ID - 9 PID