0

Centos 6.0) で、nginx が予期せず終了することがわかりました。そこで、終了時に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を強制終了すると、機能しなかったようです。私はシェルスクリプトに慣れていません。
誰でも私を助けることができますか?ありがとう~~

ジフイ

4

2 に答える 2

1

スクリプトの名前に文字列が含まれている場合、nginx5秒後に自殺します。

持っている場合は、厄介なダブルの場合は代わりpidofに試してみてください。それ以外の場合は、正規表現を厳しくしてみてください。pidof nginxgrep

grep記録として、リストに自分自身が返ってこないようにする通常の方法は、自分自身psと一致しない正規表現を使用することです。たとえば、ps aux | grep -c '[n]ginx'-cを取り除きますwc -l。たぶん、あなた自身のスクリプトを殺さないように、単語の境界やアンカーを追加してください(それがのようなものと呼ばれていると仮定しますrespawn-nginxen)。

于 2012-08-18T14:11:11.607 に答える
0

CentOS ディストリビューションに適した init スクリプトを使用しないのはなぜですか?

ここで例を読むことができます: http://articles.slicehost.com/2009/2/2/centos-adding-an-nginx-init-script

于 2012-08-18T14:47:48.343 に答える