注意:
(1)ps aux 显示系统全部进程,一行一个
(2)grep “abc” 从标准输入读取字符流,输出包含字符串“abc”的行
(3)grep -v “acb” 从标准输入读取字符流,输出不包含字符串“abc”的行
(4)wc -l 从标准输入读取字符流,输出行数
检测进程httpd是否存在
操作流程如下:
(1)读取系统所有进程
(2)判断包含指定进程名字的信息是否存在
通过管道连接,命令如下:
ps axu | grep “httpd” | grep -v “grep” | wc -l
所有进程–>获取包含“httpd”的行–>删除grep进程信息–>输出最后的行数
通过判断命令的执行结果是否为 0 ,可以知道进程是否存在。
脚本如下:
#!/bin/sh
count=`ps axu | grep “httpd” | grep -v “grep”| wc -l`
if[$count -lt 1];then
sudo /home/proudboy/apache/admin/restart.sh
fi
注:还可以执行ps axu | grep “httpd” | grep -v “grep”,然后通过判断返回值是否为0来知道程序是否有输出,如下:
#!/bin/sh
count=`ps axu | grep “httpd” | grep -v “grep” `
if[$? != “0”];then
sudo /home/proudboy/apache/admin/restart.sh
fi
接下来是如何让shell脚本定时执行的问题,有两种方式可以实现:
(1)在shell里面做循环,例如:
#/bin/sh
while true; do
if [ “$?” != “0” ]; then
fi
sleep 2
done
(2)将shell脚本加入到corntab 或者 at 里面
如下Shell脚本 实现了对tomcat6进程监控,如果不存在自动重启。
#!/bin/sh pid=`ps aux| grep "tomcat6" | grep -v grep | sed -n '1P' | awk '{print $2}'` if [ -z $pid ]; then echo "begin restart,please waiting..." sudo /etc/init.d/tomcat6 restart exit 1 else echo -e "exist ,don't need restart" fi
最新评论