使用grep命令过滤进程时,如何消除grep本身进程的影响
你是否也遇到了跟我同样的问题: 使用 grep 命令过滤并统计一个进程出现的次数,如下所示:
[root@lb01~ ]#ps -ef | grep nginx
root 20239 1 0 Jul06 ? 00:00:00nginx
: master process /usr/sbin/nginx
-c /etc/nginx
/nginx
.conf
nginx
20240 20239 0 Jul06 ? 00:00:00nginx
: worker process
root 22343 22252 0 17:55 pts/0 00:00:00 grep --color=autonginx
此时我们看到的“貌似”是 nginx 在系统中有3个进程,然后统计一下:
[root@lb01~ ]#ps -ef | grep nginx |wc -l
3
“应该是”3个进程没毛病啊?我一开始的确是这么认为的……
然后我就把这条命令放入脚本中了,截个图吧:
一个简单的不完善的脚本,后面又改动了,大神憋说话~
当 nginx 正常有 “3” 个进程时,系统不应理会这条命令才对,可是我一执行脚本,我的 keepalived 服务就被系统无情 stop了 !!!
那我肯定不服啊对不对!必须找出问题所在!
检查脚本,觉得没什么问题。重启服务再执行脚本,来来回回几次毒打之后,i 服了系统了~不过也让我发现了一个问题:
[root@lb01~ ]#ps -ef |grep nginx |wc -l
3
[root@lb01~ ]#info=`ps -ef |grep nginx |wc -l`