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

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下,后续研究



  • 14
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值