当前位置:  操作系统/服务器>linux

shell grep 查找进程的小技巧

    来源: 互联网  发布时间:2014-10-12

    本文导语:  大部分人在写Shell 过滤进程的时候 都会使用 grep 在 ps aux 的输出结果中查找指定的进程,但此时也会把 grep 进程也显示出来 比如查找 pptpd 进程,会匹配出来两条: 代码如下: [root@selboo ~]# ps aux | grep pptp root 20191 0.0 0.2 5108 704 pt...

大部分人在写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/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/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

    
 
 

您可能感兴趣的文章:

  • 在shell命令行中敲一个可执行文件,起一个进程pc,这个进程属于shell进程
  • 请教急:shell怎么实现进程监控,重启进程
  • shell如何判断当前进程是否是当天运行的进程?
  • shell进程退出,其子进程怎样才能不死,交给init进程管,谢谢,请指点下我写的程序
  • 如何用shell语句(不用人为判断)kill掉进程列表中所有进程名为aaa的进程?
  • linux下system函数调用shell命令后,怎样让主进程不等子进程返回,接着执行(在线)?
  • 请问: 在要想删掉进程名为"xxx"的进程,在shell脚本中该写什么啊?
  • linux shell关掉后java程序(进程名abc)仍能运行,用ps -ef|grep abc能查到进程名
  • 如何在C中既能读取到shell的执行结果,又能在必要时kill掉shell的进程
  • 请问大家shell属于守护进程吗?
  • 请教:如何利用shell script 去 kill 某个进程
  • linux如何获取当前程序ID并用shell脚本停止进程
  • shell中如何在父进程中获取子进程命令的返回码
  • shell退出,其相应的子进程,如何才能不死亡
  • 问一个shell问题?怎样杀死多个进程。
  • 写一个shell监测一个进程是否存在容易吗
  • shell里如何查看进程组ID
  • 求一个linux监控进程的shell程序
  • 如何用b shell命令取出某个程序的进程id并杀之!
  • 如何用shell脚本杀死指定名称的进程?
  • 关于使用shell在文件中查找一段字符串的问题
  • shell脚本:查找有执行权限的文件格式为普通的文本文档
  • shell编程中,求教,查找子字符串位置的问题
  • shell程序:在大文件中查找特定字符串,但该字符串可以跨行
  • unix shell: 如何写在文件中循环查找....请进..
  • 求查找周日生成的文件shell
  • shell关于查找指定字符是否存在
  • shell 查找目錄, 只顯示目錄名. 怎麼做?
  • 请shell编程高手指教:如何查找文件中的ip地址
  • 请问“当前shell”和“子shell”的区别? iis7站长之家
  • linux shell 查找无效软链接
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教一个shell的技巧——怎么自动输入密码?
  • shell编程实用技巧(print $0)
  • 分享shell编程中的几个小技巧
  • Shell脚本echo指令使用小技巧
  • 让代码整洁、过程清晰的BASH Shell编程技巧
  • 收集的48个Shell脚本小技巧
  • Centos6下安装Shell下文件上传下载rz,sz命令
  • 不同类型的shell*(K SHELL , C SHELL) 用命令怎么切换?
  • linux bash shell命令:grep文本搜索工具简介
  • 我在执行shell时,想在shell里直接向mysql数据库插入数据,我该如何写shell。
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 菜鸟问问题:shell是什么呢?普通的ls、cp、pwd这些命令算不算shell呢?如何把自己写的文件变成shell呢?
  • linux bash shell命令:文本搜索工具grep中用于egrep和 grep -E的元字符扩展集
  • 傻瓜问题,请问shell编程和shell脚本编程的关系
  • linux bash shell命令:文本搜索工具Grep命令选项及实例
  • shell变量和子shell的问题请教
  • linux bash shell命令:文本搜索工具grep正则表达式元字符集(基本集)
  • 请问“当前shell”和“子shell”的区别?
  • 怎么知道当前是B_SHELL 还是C_SHELL
  • 用户登陆后运行某SHELL退出SHELL就回到LOGIN是怎么作到的?
  • 怎么写shell代码 写好shell怎么运行?
  • 请问一个shell中如何获取这个shell自身抛出的错误?
  • 非登录shell是什么 意思,和登录shell有什么区别啊
  • Solaris 8中修改root的shell为一个非法的Shell后怎么办?
  • 各位Shell高人,如何取得Shell的第10个入口参数?$10不行啊,急!
  • shell 编程 执行shell新建多个终端 并执行程序
  • 如何在一台机器上的shell中执行另外一台机器上的shell


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3