+ -
当前位置:首页 → 问答吧 → 一个关于grep 取值的问题

一个关于grep 取值的问题

时间:2011-03-15

来源:互联网

想在一个脚本里实现这个功能:

检测一个指定的进程,如果查出来值不等于0,则说明进程存在,KILL,如果KILL不掉,则发邮件通知。

我用grep 的时候发现,即使进程不存在了,但是用ps aux|grep -c 进程名 的时候还会显示1个进程。

没有终止ntp之前:

# ps aux|grep ntp
root       847  0.0  0.0  61188   724 pts/1    S+   10:38   0:00 grep ntp
ntp       3521  0.0  0.1  19188  4888 ?        SLs  Feb22   0:00 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
[root@host smallfish]# ps aux|grep -c ntp
2

终止ntp之后
# service ntpd stop
Shutting down ntpd:                                        [  OK  ]
[root@host smallfish]# ps aux|grep -c ntp
1

用什么参数能让我终止进程之后,在用ps aux|grep ntp的时候显示0?不然我脚本里判断的时候,如果不是0就认为这个进程还存在的。

作者: smallfish   发布时间: 2011-03-15

回复 smallfish


    ps aux|grep -v "grep "|grep -c ntp

作者: wtuter   发布时间: 2011-03-15

因为 grep 也是一个进程 ,所以即使没有该进程, 也能打印出信息

作者: chenbin200818   发布时间: 2011-03-15

利用[]或者grep -v:
一下两种效果相同,建议用第一种:
  1. [tdlteman@hzling11:~]-No.105->$ ps -ef | grep -c [n]tp
  2. 1
  3. [tdlteman@hzling11:~]-No.106->$ ps -ef | grep -v grep | grep -c ntp
  4. 1
复制代码

作者: xiaopan3322   发布时间: 2011-03-15