如何在bash中快速杀死java进程?

问题描述:

在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

您可以在启动过程时保存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

简短的回答:

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

为了让你想杀死并运行

杀的人这一过程的是java程序运行

netstat的-tuplen

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