• 左右linuxserver自己主动重启过程监控和简单的解决方案


    转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog)

    本周開始,新手游进行删档封測阶段,前两天表现还好,今天更新后出现几次宕机行为。比較影响玩家的測试和体验,我们的server管理系统尚未完好,为了晚上能够预防宕机造成损失,先用一种简单的方案暂时顶替一下。

    实现原理主要是使用linux提供的crontab机制。定时查询server进程是否存在,假设宕机则处理我们预设的脚本。

    首先我们要向crontab增加一个新任务。

    # crontab -e:进入编辑状态。事实上就是使用vi编辑。

    */1 * * * * sh /root/monitor.sh

      我这里仅仅是简单的设置每分钟调用一个shell脚本monitor.sh。这里能够配置的更强大。大家能够去搜索一下crontab的教程,网上有非常多这类的教程。

    这里须要注意的是,非常多教程配置command的时候直接使用/root/monitor.sh。我设置的时候发现这样配置不会运行shell脚本,前面加上sh后就能运行了。

    然后我们開始写monitor.sh这个shell脚本。

    #! /bin/sh  
      
    proc_name="WorldFrame_d"        #进程名
      
    proc_num()                      #查询进程数量
    {
        num=`ps -ef | grep $proc_name | grep -v grep | wc -l`
        return $num
    }
    
    proc_num  
    number=$?                       #获取进程数量
    if [ $number -eq 0 ]            #假设进程数量为0
    then                            #又一次启动server,或者扩展其他内容。

    cd /longwen/server/sbin/linux; ./WorldFrame_d -c 1 fi

      我这个脚本,仅仅是简单的检測了进程是否存在。不存在就自己主动重新启动server。

    这里事实上也能够扩展一下。比方对日志文件的处理以及重新启动时间等的记录等等。

    须要注意的是在windows编辑sh文件要注意格式问题(CR/LR),否则easy出现sh运行错误的BUG。

    好了。进行測试吧,我这里測试OK,记录一下,希望能帮到其他遇到相似问题的同学。


    补充,今天測试的时候发现有时候不运行。跟踪后发现crontab进程出现错误,重新启动一下就ok了。

    使用以下的命令查看crond的状态。

    #service crond status

    假设出现crond (pid  xxxx) is running...表示正常,否则表示有异常行为。

    我今天出现了crond dead but subsys locked

    #service crond start

    服务重新启动后问题解决。


    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    搭建页面:数据库的增删改查
    阿里云的使用运维安装
    promis:异步编程
    微信开发笔记
    细数那些带打赏功能的平台
    写给自己的TypeScript 入门小纲
    Node.js自学笔记之回调函数
    来简书坚持一个月日更之后
    全选或者单选checkbox的值动态添加到div
    一个前端妹子的悲欢编程之路
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4855689.html
Copyright © 2020-2023  润新知