熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> 嵌入式開發 >> 正文

shell grep 查找進程的小技巧

2022-06-13   來源: 嵌入式開發 
大部分人在寫Shell 過濾進程的時候 都會使用 grep 在 ps aux 的輸出結果中查找指定的進程但此時也會把 grep 進程也顯示出來 比如查找 pptpd 進程會匹配出來兩條

  復制代碼 代碼如下:

  [root@selboo ~]# ps aux | grep pptp
root pts/ R+ : : grep pptp
root ? Ss Oct : /usr/sbin/pptpd



常見的防止grep進程出現的方法就是在對加一個管道 grep v grep 進行過濾

  復制代碼 代碼如下:

  [root@selboo ~]# ps aux | grep pptp | grep v grep
root ? Ss Oct : /usr/sbin/pptpd



還有一個更方便的方法是用 正則 grep [p]ptpd來搜索pptpd這個進程

  復制代碼 代碼如下:

  [root@selboo ~]# ps aux | grep [p]ptp
root ? Ss Oct : /usr/sbin/pptpd



雖然說它比 grep v grep 也未必方便多少但是如果用大量循環的監控腳本上每次都能減少一次系統grep調用也就是減少一次創建進程雖然提升很小可以忽略不計但是用在shell寫的監控腳本上來說多少還有點提升的優化就是注重細節嘛

以下是執行五次測試結果

使用grep v grep 方式

  復制代碼 代碼如下:

  [root@selboo etc]# time for (( i=; i<=; i++ )) ;do ps aux | grep pptp | grep v pptp &>/dev/null; done
real ms ms ms ms ms
user ms ms ms ms ms
sys ms ms ms ms ms



使用正則方式

  復制代碼 代碼如下:

  [root@selboo etc]# time for (( i=; i<=; i++ )) ;do ps aux | grep [p]ptp &>/dev/null; done
real ms ms ms ms ms
user ms ms ms ms ms
sys ms ms ms ms ms


From:http://tw.wingwit.com/Article/program/qrs/201401/30220.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.