shell grep 查找进程的小技巧

 更新时间:2013年01月23日 12:09:35   作者:  
大部分人在写Shell 过滤进程的时候 都会使用 grep 在 ps aux 的输出结果中查找指定的进程,但此时也会把 grep 进程也显示出来
大部分人在写Shell 过滤进程的时候 都会使用 grep 在 ps aux 的输出结果中查找指定的进程,但此时也会把 grep 进程也显示出来 比如查找 pptpd 进程,会匹配出来两条:

复制代码 代码如下:

[root@selboo ~]# ps aux | grep pptp
root 20191 0.0 0.2 5108 704 pts/2 R+ 16:58 0:00 grep pptp
root 22054 0.0 0.1 1952 608 ? Ss Oct22 0:00 /usr/sbin/pptpd


常见的防止grep进程出现的方法就是在对加一个管道 grep -v grep 进行过滤:

复制代码 代码如下:

[root@selboo ~]# ps aux | grep pptp | grep -v grep
root 22054 0.0 0.1 1952 608 ? Ss Oct22 0:00 /usr/sbin/pptpd


还有一个更方便的方法是用 正则 grep [p]ptpd来搜索pptpd这个进程:

复制代码 代码如下:

[root@selboo ~]# ps aux | grep [p]ptp
root 22054 0.0 0.1 1952 608 ? Ss Oct22 0:00 /usr/sbin/pptpd


虽然说它比 grep -v grep 也未必方便多少,但是如果用大量循环的监控脚本上,每次都能减少一次系统grep调用,也就是减少一次创建进程,虽然提升很小可以忽略不计,但是用在shell写的监控脚本上来说多少还有点提升的,优化就是注重细节嘛。

以下是执行五次测试结果:

使用grep -v grep 方式
复制代码 代码如下:

[root@selboo etc]# time for (( i=1; i<=200; i++ )) ;do ps aux | grep pptp | grep -v pptp &>/dev/null; done
real 0m1.487s 0m1.475s 0m1.488s 0m1.497s 0m1.499s
user 0m0.335s 0m0.328s 0m0.334s 0m0.326s 0m0.312s
sys 0m0.766s 0m0.757s 0m0.772s 0m0.784s 0m0.795s


使用正则方式
复制代码 代码如下:

[root@selboo etc]# time for (( i=1; i<=200; i++ )) ;do ps aux | grep [p]ptp &>/dev/null; done
real 0m1.306s 0m1.344s 0m1.303s 0m1.298s 0m1.329s
user 0m0.343s 0m0.313s 0m0.326s 0m0.274s 0m0.322s
sys 0m0.742s 0m0.801s 0m0.753s 0m0.798s 0m0.784s

相关文章

  • linux上搭建solr的操作方法(用tomcat部署)

    linux上搭建solr的操作方法(用tomcat部署)

    下面小编就为大家分享一篇linux上搭建solr的操作方法(用tomcat部署),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • Linux执行.sh文件时提示No such file or directory该怎么办(三种解决办法)

    Linux执行.sh文件时提示No such file or directory该怎么办(三种

    本文通过三种方法给大家介绍Linux执行.sh文件,提示No such file or directory错误的解决办法,感兴趣的朋友跟着小编一起学习学习吧
    2015-10-10
  • 利用shell创建文本菜单与窗口部件的方法

    利用shell创建文本菜单与窗口部件的方法

    这篇文章主要给大家介绍了关于利用shell创建文本菜单与窗口部件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-11-11
  • Linux启动新进程的三种方法

    Linux启动新进程的三种方法

    本篇文章主要介绍了Linux启动新进程的三种方法以及这三种方法之间的区别。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-04-04
  • linux下mysql如何自动备份shell脚本

    linux下mysql如何自动备份shell脚本

    对任何一个已经上线的网站站点来说,数据备份都是必须的。无论版本更新还是服务器迁移,备份数据的重要性不言而喻。人工备份数据的方式不单耗费大量时间和精力,还灰常不专业。下面小编给大家分享linux下mysql自动备份shell脚本,需要的朋友可以参考下
    2015-09-09
  • linux shell命令行选项与参数用法详解

    linux shell命令行选项与参数用法详解

    本文介绍了linux shell中使用命令行选项与命令行参数的方法,在bash中,可以用以下三种方式来处理命令行参数,每种方式都有自己的应用场景
    2014-04-04
  • Linux Shell中curl和wget使用代理IP的方法教程

    Linux Shell中curl和wget使用代理IP的方法教程

    这篇文章主要给大家介绍了关于在Linux Shell中curl和wget使用代理IP的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
    2017-08-08
  • linux使用update-alternatives切换java版本

    linux使用update-alternatives切换java版本

    这篇文章主要介绍了linux使用update-alternatives切换java版本的相关资料,需要的朋友可以参考下
    2017-04-04
  • git 使用及常用命令

    git 使用及常用命令

    本文是关于git 的使用和一些git使用小技巧,以及git的常用命令,进行的整理,希望能帮助有需要的小伙伴
    2016-07-07
  • linux中mysql备份shell脚本代码

    linux中mysql备份shell脚本代码

    在linux中如果想定时备份数据库的脚本我们可以很方便简单的操作,下面我来分享一段mysql定时备份的脚本代码
    2013-02-02

最新评论