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
答案 0 :(得分:1)
如果您的脚本名称包含字符串nginx
,则会在5秒后自杀。
如果您有pidof
,请尝试使用pidof nginx
代替笨拙的双grep
。否则,请尝试收紧你的正则表达式。
对于记录,避免让grep
在ps
列表中返回自身的惯用方法是使用与自身不匹配的正则表达式。例如,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