服务器之家

服务器之家 > 正文

分享一份nginx重启脚本

时间:2019-10-12 12:21     来源/作者:nginx教程网

最开始的时候,我是用最直接的重启方式 

killall -9 nginx;/data/nginx/sbin/nginx 

如果机器比较慢,kill进程时一瞬间杀不完,再执行一次即可。这种重启方式不是特别安全,如果配置有误,则会重启失败,需要重新修改配置文件然后再启 动,期间会消耗一点时间。不过对于目前普遍还是不怎么严格的http界而言,这点时间还不至于产生太大损失,只要不是在关键时刻搞出来就好。如果希望沿用 这种重启办法,我提议还是先好好测试吧。 

后来我在nginx.net上看到了一种更奇妙的重启 

kill -HUP $pid($pid就是nginx master进程的进程号) 

我一般这样用 

kill -HUP `cat /data/nginx/logs/nginx.pid` 

这种方式的好处是实现“平滑重启”,在ps -aux中可以看到,nginx首先启动新进程,旧的进程仍然提供服务,在一段时间后,旧的进程服务结束就自动关闭,剩下新进程继续服务。但是这种方式也 是有缺点的,如果配置文件有误,或者资源冲突,则重启失效,但nginx并没有任何的提示!这就会时常发现改动的配置文件没有生效,又比较难找到问题。 

所以,最后杂和了一下问题,弄了一个nginx.sh,这个版本的nginx.sh还是没有解决kill -HUP的资源冲突的问题,但解决了配置文件的问题。资源冲突的比如80端口被占用、日志文件目录没有创建这种的,我再想想办法。 

复制代码代码如下:


#!/bin/sh 
BASE_DIR='/data/' 
${BASE_DIR}nginx/sbin/nginx -t -c ${BASE_DIR}nginx/conf/nginx.conf >& ${BASE_DIR}nginx/logs/nginx.start 
info=`cat ${BASE_DIR}nginx/logs/nginx.start` 
if [ `echo $info | grep -c "syntax is ok" ` -eq 1 ]; then 
if [ `ps aux|grep "nginx"|grep -c "master"` == 1 ]; then 
kill -HUP `cat ${BASE_DIR}nginx/logs/nginx.pid` 
echo "ok" 
else 
killall -9 nginx 
sleep 1 
${BASE_DIR}nginx/sbin/nginx 
fi 
else 
echo "######## error: ########" 
cat ${BASE_DIR}nginx/logs/nginx.start 
fi 

标签:

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字 2019-06-05
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
返回顶部