Linux grep 命令快速入门

使用Linux一段时间的朋友应该会在各种场合见过grep命令,但是一开始应该不会专门去使用它,因为grep作为一个辅助的命令并不是非用不可的,只是通过这个命令我们可以节约很多时间(同时也可以起到装x的作用

设想以下情境,你运行了若干个同样或相似的进程(例如都是通过python解释器运行的),由于某些原因,这些进程无法正常关闭了,你通过top命令来查看资源占用

现在我们要将这四个python进程杀死,一般的方法是通过kill -9 PID 或者killall -9 进程名,这里假设你只知道前者

为了关闭所有的python进程,你可以根据PID一个个手动输入kill -9 PID,但是这样的效率很低而且不够优雅,如果你运行了几十个这样的进程总不至于还手动杀死吧。为了杀死所有目标进程,我们需要先获得他们的PID,而ps命令可以帮助我们打印所有进程的信息

可以看到打印出的信息有进程名和PID,还有TTY和运行时间(WSL下面似乎有一点问题,不过不影响)

我们如何从中过滤出python进程的信息呢?尤其是如果运行的进程很多,远不止有一页的信息,几乎不可能用肉眼去查找,这里我们使用ps -ef|grep python来显示想要的信息,输出如下

wistral@:~$ ps -e|grep python
 2651 tty1     00:00:00 python
 2652 tty1     00:00:00 python
 2653 tty1     00:00:00 python
 2654 tty1     00:00:00 python

 完整的命令是

ps -e|grep python |awk '{print $1}'|xargs kill -9

这里将上述输出通过awk脚本输出每行第一个参数,即PID,再通过xargs依次传给后面的命令kill,即杀死所有python进程

wistral@reimu:~$ ps -e|grep python |awk '{print $1}'|xargs kill -9
[1]   Killed                  python server.py
[2]   Killed                  python server.py
[3]-  Killed                  python server.py
[4]+  Killed                  python server.py

以上只是一个非常简单的使用,实际中再举一个例子,比如我现在要查找系统中的Python.h文件

这里的输出还算比较少的,如果输出有好几页,我们很难找到我们想要的信息,我们这里需要进一步缩小搜索范围

ls /usr/include/python3.5 |grep -i python.h
Python.h # 输出

看到输出有一个名为Python.h的文件,这里将ls的输出传给grep过滤,-i选项表示忽略(ignore)大小写,否则这里输出是没有任何东西的

以上就是grep最基本的用法了,如果想要更详细的了解,可以查看手册

man grep

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值