Shell脚本在意外退出时启动nginx

时间:2012-08-18 13:49:09

标签: bash shell nginx monitor

Centos 6.0),我发现我的nginx会意外退出。所以我想编写一个shell脚本来在它退出时启动nginx。以下是剧本:

 #!/bin/bash
 nginxBin=/usr/bin/nginx
 confFile=/etc/nginx/nginx.conf
 LOGS=/var/log/nginx/nginx.log
 restart_nginx() {
     echo " `date`---restart the nginx " >> $LOGS
     $nginxBin -c $confFile
  }

 while true
 do
     NGINX_NUM=`ps aux | grep "nginx" | grep -v "grep" | wc -l`
     if [ $NGINX_NUM -lt 2 ]; then
         restart_nginx
         continue
     fi                                                                                                                                                                                                 
     sleep 5
 done

我把它放在/etc/rc.local中,但是当我杀死nginx进行测试时,它似乎无效。因为我不熟悉shell脚本 谁能帮我 ?谢谢~~

zjhui

2 个答案:

答案 0 :(得分:1)

如果您的脚本名称包含字符串nginx,则会在5秒后自杀。

如果您有pidof,请尝试使用pidof nginx代替笨拙的双grep。否则,请尝试收紧你的正则表达式。

对于记录,避免让grepps列表中返回自身的惯用方法是使用与自身不匹配的正则表达式。例如,ps aux | grep -c '[n]ginx'-c摆脱了wc -l。也许添加一个单词边界和/或锚点,以避免杀死自己的脚本(假设它被称为respawn-nginxen)。

答案 1 :(得分:0)

为什么不使用适合CentOS发行版的init脚本?

可在此处阅读示例:http://articles.slicehost.com/2009/2/2/centos-adding-an-nginx-init-script