nginx 启动报错:无法找到 “/usr/local/nginx/logs/nginx.pid”文件

在写一个自动部署脚本时,需要修改ningx配置,然后重启:

nginx -s stop

nginx

但是有时候会报错:无法找到 “/usr/local/nginx/logs/nginx.pid”文件。因为不是必然重现,排查了好久,最后怀疑是nginx还没有stop,就执行nginx,导致不能锁定nginx.pid文件。然后试了循环重启:

nginx -s stop
等待 gogs 启动,重试10次(10秒)
try_count=0
while (($try_count < 10)); do :
a=ps -ef|grep nginx|wc -l
if [ “$a” == “1” ]
then
echo “nginx stopped!”
break;
fi
((try_count++))
sleep 1
done
if (($try_count >= 10))
then
echo “nginx stop error!”
fi
nginx

果然,不报错了。但这样写好丑陋,多个地方都需要重启nginx,还得提取一个函数。最后的最后,脑子突然开窍,不是要重启嘛,这样不就行了:

nginx -s reload

因为一开始的代码都是先stop,再启动,我也就一直沿用这个思路。所以,有时候陷入了思维定式,真的很可怕。。。

留下评论

电子邮件地址不会被公开。 必填项已用*标注