0

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 脚本。
谁能帮我 ?谢谢~~

朱慧

4

2 回答 2

1

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

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

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

于 2012-08-18T14:11:11.607 回答
0

为什么不使用适合您的 CentOS 发行版的初始化脚本?

一个例子可以在这里阅读:http: //articles.slicehost.com/2009/2/2/centos-adding-an-nginx-init-script

于 2012-08-18T14:47:48.343 回答