2016-01-22 55 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 " "是提取第一个“列”的部分。 `执行中的命令并将结果作为杀死参数。