例子: (来源: shell从入门到精通(阿良))
判断 crond 进程是否运行 :
#!/bin/bash
NAME=crond
NUM=$( ps -ef | grep $NAME | grep -vc grep )
if [ $NUM -eq 1 ]; then
echo "$NAME running."
else
echo "$NAME is not running!"fi
grep -vc grep 这个作用是什么呢?
--------------------------------------------------------------start-----------------------------------------------------------------//
https://blog.51cto.com/magic3/1353123
-v 选项
-v选项显示不包含模式的所有行,下面给出一个使用-v选项的例子。
grep -v 的用法:
[shizhenning@zabbix ~]$ grep -v "j*b" test*
test:hello world!
test:hello jimmy!
test:
test1:ignore
test1:
[shizhenning@zabbix ~]$ grep -vc "j*b" test*
test:3
test1:2
结合使用-v 和-c 参数列出test、test1文件中不包含模式中的关键字的行数。
--------------------------------------------------------------end-----------------------------------------------------------------//
综上 : NUM=$( ps -ef | grep $NAME | grep -vc grep )
这一行是 列出所有进程(ps -ef), 并查找name为crond的进程,并去除 含有查找crond (grep crond)的进程.
实际在环境中单独运行ps -ef | grep $NAME 命令就会比较清晰了。