关于linux服务器进程监控及自动重启的简单方案

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

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

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

首先我们要向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                            #重新启动服务器,或者扩展其它内容。
    cd /longwen/server/sbin/linux; ./WorldFrame_d -c 1
fi  

我这个脚本,只是简单的检测了进程是否存在,不存在就自动重启服务器。

这里其实也可以扩展一下,比如对日志文件的处理以及重启时间等的记录等等。

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

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

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

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

#service crond status

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

我今天出现了crond dead but subsys locked

#service crond start

服务重启后问题解决。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏liulun

让git不再跟踪配置文件的变化

1432
来自专栏游戏杂谈

替换系统自带的记事本

系统自带的记事本功能比较弱,所以一般我会选择使用notepad2.exe来替代它。

3043
来自专栏24K纯开源

mac下利用Breakpad的dump文件进行调试

一、前情回顾 最近把公司的一个视频处理程序更新了一个版本,准备提交测试的发现了崩溃的情况。这个程序采用Qt和ffmpeg技术栈开发,主要用于对视频进行渲染拼接处...

6489
来自专栏钟绍威的专栏

web服务器集群集群是什么?分布式是什么?集中式是什么?例子缺点

概述 集群和分布式都是从集中式进化而来的。分布式和集群会相互合作的,同时的集群和分布式。在这里重点说说集群 集群是什么? 集群能提高单位时间内处理的任务数量,提...

4469
来自专栏钟绍威的专栏

scope='request'的bean预加载冲突

Error creating bean with name ‘authenticationSuccessServlet’: Scope ‘request’ is...

1976
来自专栏Scott_Mr 个人专栏

Git从入门到速成

1155
来自专栏雨过天晴

原 mac brew

1826
来自专栏企鹅号快讯

利用Django在前端展示Oracle 状态趋势

开发环境 操作系统:CentOS 7.4 Python版本 :3.6 Django版本: 1.10.5 操作系统用户:oms 数据处理:pandas 前端展示:...

3067
来自专栏运维技术迷

chattr命令

chattr命令用来改变文件属性。这项指令可改变存放在ext2/3/4文件系统上的文件或目录属性。 一、文件或目录属性 1.1 属性 这些属性共有以下8种模式...

3435
来自专栏星汉技术

虚拟机:Linux系统安装

3057

扫码关注云+社区

领取腾讯云代金券