链条传动

砥砺前行,不忘初心!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

公司使用Nginx做反向代理,以前都挺正常的,最近不知怎么回事总是无端被系统kill,而在nginx错误日志中也没有信息输出。

网上查了很多资料,也没什么靠谱的回答,唯一觉得有点关联的就是linux OOM Killer了,这篇文章感觉有点关系:理解和配置 Linux 下的 OOM Killer也给出了相应的解决办法。

 

但我还是不太放心,万一最后还是被kill了怎么办,想来想去,最后还是决定写一个脚本来进行监控。

脚本功能:

每隔5秒检查一次,查看Nginx进程是否存在,如果不存在,就重新启动Ngin服务。

 1 #!/bin/bash
 2 #
 3 # filename: check.sh
 4 # 功能:监控 nginx 是否正常
 5 #
 6 # nginx重启的脚本
 7 V_NGINX="/usr/local/nginx/sbin/nginx"
 8 # 日志文件
 9 V_LOG="/logs/check_nginx.log"
10 
11 # 函数定义:重启nginx
12 function restart_nginx(){
13     echo "----- `date` -----" >> $V_LOG
14     echo "--------nginx process----------" >> $V_LOG
15     echo "`ps aux |grep 'nginx'`" >> $V_LOG
16     echo "--------start nginx----------" >> $V_LOG
17     $V_NGINX  >> $V_LOG
18 }
19 
20 # 循环执行,不采用 crontab ,因为 crontab 最小单位是分钟,时间太长了
21 while :
22 do
23     # 检测 nginx 进程是否存在
24     V_NGINX_NUM=`ps axu |grep 'nginx' |grep -v 'grep' |wc -l`
25     if [ $V_NGINX_NUM -lt 1 ];then
26         restart_nginx  #调用重启函数
27         continue
28     fi
29     # 休眠
30     sleep 5
31 done

 


 

参考资料:

http://zhengdl126.iteye.com/blog/1456417

posted on 2016-07-12 11:45  链条君  阅读(496)  评论(0编辑  收藏  举报