1.答案
ps -ef
| grep java
| grep -v
grep |awk '{print $2}'| xargs kill -9
指令意义
ps -ef指令用来查询所有进程grep java通过管道来过滤指定名字中含有 java 进程grep -v反向查询,即过滤出不包含 -v 参数后指定字符的信息awk在这里的作用是取出进程idxargs接收awk分割后的输出作为kill -9 的参数
2.分析
有很多人同学可能不理解为什么需要grep -v grep,这条指令的意思是什么呢? 我们一步一步来 当我们直接执行以下代码时
ps -ef
| grep java
除了我们的目标进程还有另外一个进程 第一个是目标进程,第二个是什么进程呢? 其实,执行grep这条指令时,该命令本身执行的时候也是一个进程,并也带有 java 关键字,所以其会出现在最后输出的进程信息里 所以我们需要grep -v 过滤掉包含grep信息的进程 过滤掉后就只剩目标进程了 然后通过以下命令取出进程id,awk默认是通过空格分割,$1 $2代表的是分割后的结果
awk '{print $2}'
我们取第二个 也就是进程id 所以是$2 最后通过xargs传递给kill -9杀掉目标进程