zoukankan      html  css  js  c++  java
  • Linux如何实现进程监控和守护

    最近新搭建的亚马逊EC2服务器, 上面部署了一个静态的WEB, 启动了一个nginx做代理。最近发现一个问题:

    Nginx进程隔一段时间就莫名的挂掉了, 然后就出现了网站无法打开的窘境。。

    为了防止这个问题再次发生, 特使用如下方法进行Nginx的进程守护。

    1. 编写脚本, 监测nginx进程,如果挂掉,则重启,否则不予干预。

    在/data/work/scripts目录下创建一个 restart_nginx.sh文件, 内容如下:

    #查找nginx进程,排除掉grep命令产生的进程号,awk打印第2列值(即进程号)赋给pid变量
    pid=`ps aux | grep nginx | grep -v grep | awk '{print $2}'`
    #记录当前时间 dat
    =`date '+%Y-%m-%d %H:%M:%S'` #输出当前时间 echo $dat
    #输出进程号
    echo $pid #当串的长度大于0时为真(进程号不为空) if [ -n "$pid" ] then {
    # 说明进程还活着,不用处理
    echo ===========alive!================ } else
    #否则进程挂了,需要重启 echo ===========shutdown!start============== /opt/tengine/sbin/nginx
    sleep 2;
    fi

    2. 给予restart_nginx.sh文件可执行权限

    chmod u+x restart_nginx.sh

    3. 编辑linux定时器, 增加定时任务, 每隔2分钟执行restart_nginx.sh脚本

    crontab -e

    粘贴如下内容:

    */2 * * * * /data/work/scripts/restart_nginx.sh >> /data/work/scripts/restart_nginx.log

    4. 重启定时器

    /etc/init.d/crond restart

    5. 先查看下当前nginx进程的状态

    发现有四个和nginx相关的进程。

    6. 在看看定时日志:

    说明此时进程是正常的。

    6. 为了测试nginx挂了能否自动重启, 我们手动杀死nginx

    ps -ef | grep 'nginx' | grep -v grep| awk '{print $2}' | xargs kill -9

     此时nginx已经被杀死, 我们等待两分钟, 看进程在定时器下能否自动恢复。

     

    此时看到,当前进程已经启动起来了!

  • 相关阅读:
    查找表类算法//字母异位词分组
    查找表类算法//四数相加 II
    查找表类算法//四数相加 II
    第六章 类文件结构
    第六章 类文件结构
    查找表的算法//四数之和
    查找表的算法//四数之和
    第五章 调优案例分析与实战
    第五章 调优案例分析与实战
    C++_基础4-分支语句和逻辑运算符
  • 原文地址:https://www.cnblogs.com/mhl1003/p/9555144.html
Copyright © 2011-2022 走看看