[Linux]Linux命令行下 一条命令杀死一个进程

    技术2022-07-11  75

    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杀掉目标进程

    Processed: 0.104, SQL: 9