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

相关文章

  • java应用启动与停止的shell脚本分享

    java应用启动与停止的shell脚本分享

    这篇文章主要和大家分享三个shell脚本,分别是jvm启动参数相关的setjvment.sh,利用java命令启动进程的start.sh和停止java进程的stop.sh,有需要的可以参考下
    2023-10-10
  • Linux终端命令行的常用快捷键详解

    Linux终端命令行的常用快捷键详解

    下面小编就为大家带来一篇Linux终端命令行的常用快捷键详解。小编觉的挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • shell如何记录用户的IP与命令详解

    shell如何记录用户的IP与命令详解

    这篇文章主要给大家介绍了关于shell是如何记录用户的IP与命令的相关资料,记录用户输入过的命令使用history命令,而记录用户的IP可能稍复杂一些,需要的朋友们下面跟着小编一起来看看吧。
    2017-06-06
  • Linux 进程替换(exec函数)实现代码

    Linux 进程替换(exec函数)实现代码

    这篇文章主要介绍了Linux 进程替换(exec函数)实现代码的相关资料,需要的朋友可以参考下
    2017-05-05
  • shell参数换行与shell输出换行的方法实例

    shell参数换行与shell输出换行的方法实例

    这篇文章主要给大家介绍了关于shell参数换行与shell输出换行的方法实例,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-02-02
  • Shell脚本传参数方法总结

    Shell脚本传参数方法总结

    这篇文章主要介绍了Shell脚本传参数方法总结,本文着重讲解传递固定个数参数的方法、可变个数参数的方法两部份内容,需要的朋友可以参考下
    2015-05-05
  • Linux 中unzip解压时中文乱码的解决办法

    Linux 中unzip解压时中文乱码的解决办法

    这篇文章主要介绍了Linux 中unzip解压时中文乱码的解决办法的相关资料,这里提供两种解决办法,希望能通过本文帮助到大家,需要的朋友可以参考下
    2017-09-09
  • Linux Shell中三种引号的用法及区别

    Linux Shell中三种引号的用法及区别

    Linux Shell中有三种引号,分别为双引号(" ")、单引号(' ')以及反引号(` `)。那么这三种引号有什么区别呢?下面脚本之家小编给大家介绍下用法及区别,需要的的朋友参考下
    2017-03-03
  • Linux中grep命令详解

    Linux中grep命令详解

    grep命令是Linux系统中最重要的命令之一,功能是从文本文件或管道数据流中筛选匹配的行和数据,如果再配合正则表达式,功能十分强大,是Linux运维人员必备的命令,这篇文章主要介绍了Linux中grep详解,需要的朋友可以参考下
    2023-02-02
  • Shell脚本编程之判断语句

    Shell脚本编程之判断语句

    这篇文章主要介绍了Shell脚本编程之判断语句的相关资料,需要的朋友可以参考下
    2016-01-01

最新评论