小知识:分享一份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 
声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:linux目录结构

2023-5-17 13:50:03

建站知识

小知识:如何修改linux用户密码

2023-5-17 13:58:14

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索