1.答案
ps -ef | grep java | grep -v grep |awk '{print $2}'| xargs kill -9
指令 | 意义 |
---|---|
ps -ef | 指令用来查询所有进程 |
grep java | 通过管道来过滤指定名字中含有 java 进程 |
grep -v | 反向查询,即过滤出不包含 -v 参数后指定字符的信息 |
awk | 在这里的作用是取出进程id |
xargs | 接收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杀掉目标进程