仅杀死特定Java jar的进程(实例)

时间:2016-01-22 08:20:12

标签: linux bash grep kill

我需要创建自动脚本,它会杀死特定Java JAR的运行进程。

我是这样手动做的:

jps -v

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

我根据JAR名称选择特定进程,例如myJarToKill.jar并运行以杀死它们。

kill 4573 4576  

是否有可能通过这样的grep或sth得到这些进程的数量?把它传给kill命令?

2 个答案:

答案 0 :(得分:2)

要使用的命令是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&#34; myJarToKill.jar&#34; | awk&#39; {print $ 1}&#39;

  

注意:   $2表示ps输出在空格分隔的字段中分割。   因此,当您第一次运行该命令时,请检查awk '{print $2}'输出是否为预期结果,否则您应将字段编号$2更改为您需要的字段。

如果&#34; notMyJarToKill.jar&#34;仍然存在添加这个:

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

然后,如果输出结果包含您要杀死的pid,则可以运行此

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

注意:您也可以使用kill -TERM,这取决于您的需求。

此致 克劳迪奥

答案 1 :(得分:0)

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

cut -f1 -d " "是提取第一个&#34;列&#34;的部分。 `get执行中的命令,结果作为kill的参数给出。