ps -ef|grep cpu|grep -v grep 查看进程情况并去掉grep

ps -ef|grep cpu|grep -v grep

1、场景

在一个Linux机器上起了很多个cpu.sh的脚本,如下图,想一次性把他们kill掉

2、方法

2.1去除grep cpu

上图中可以看到最后一个pid为22603的进程是grep cpu进程,并非cpu.sh,怎么把它去除呢,通过ps -efw | grep cpu |grep -v grep达到目的

为什么能达到这个效果?

我们通过grep --help看

可以看出

1.grep 是查找含有指定文本行的意思,比如grep cpu 就是查找含有cpu的文本的行

2.grep -v 是反向查找的意思,比如 grep -v grep 就是查找不含有 grep 字段的行

2.2杀进程

使用ps -efw一个一个查看cpu.sh的PID,然后一个一个kill -9 PID或 kill -9 PID1 PID2 PID3

kill -9后面支持多个PID,意思是将这些PID全部kill掉

2.3进阶

kill -9 `ps -ef|grep cpu|grep -v grep|awk '{print $2}'`

kiil -9后面``里面的内容表示参数输入,而ps -ef|grep cpu|grep -v grep|awk '{print $2}'的的效果需要说明Linux的一个原理

管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。

那么这个命令行的解析如下:

1、ps -ef 显示所有的进程,其中后面的e是显示结果的意思,f是显示完整格式,其他比如-w是不限制列宽显示,具体可见ps --help all

2、ps -ef|grep cpu作用是把包括cpu这个关键字的进程都显示出来

3、如2.1所示,ps -ef|grep cpu会把grep cpu的进程也统计进来,因此用ps -ef|grep cpu|grep -v grep去除grep进程

4、最后,只包含cpu关键字的进程筛选结果作为输入给awk '{print $2}',这个部分的作用是提取输入的第二列,而第二列正是进程的PID

执行效果见下图

附录:

本文内容参考了

https://blog.csdn.net/beyondlpf/article/details/8065070

作者还提及了pgrep、pidof、xargs、pkill和killall等命令行,很有意思,尤其是pkill,达到本文档目的用pkill只需要pkill -9 cpu即可,很简洁,但不知道在我的机器上为何没有生效,mark下,后续研究


--------------------- 
作者:u____ 
来源:CSDN 
原文:https://blog.csdn.net/u____/article/details/79859503 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/suixinsuoyu12519/article/details/84975275