关于linux服务器进程监控及自动重启的方法介绍,linux服务器进程监控


这篇主要讲关于linux服务器进程监控及自动重启的简单方案,实现原理主要是使用linux提供的crontab机制,定时查询服务器进程是否存在,如果宕机则处理我们预设的脚本。

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

  实现原理主要是使用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 ]           

  #如果进程数量为0then                           

   #重新启动服务器,或者扩展其它内容。   

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

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

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

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

  好了,进行测试吧,我这里测试OK,记录一下,希望能帮到其它遇到类似问题的同学。谢谢阅读,希望能帮到大家,请继续关注帮客之家,我们会努力分享更多优秀的文章。


linux监控进程的程序

以监控firefox为例

#!/bin/bash
#this is a monitor script
while :
do
if [ -n `ps ax|grep firefox|grep -v grep` ]
then
sleep 60
else
firefox
fi
done
 

LINUX进程监控保护

几种办法,
1, 最简单的,写一个脚本,比如

#!/bin/sh

while true
do
./1234 xx bb
done

执行这个脚本,就不用担心 1234 退出后出问题了。

2, 用上面的方法,你可能会提出,如果脚本本身被杀了怎么办…… 可以用定时任务,比如 通过 crontab 可以每分钟去检查一下1234进程是否还在

比如下面的脚本可以检查 1234 是否存在,如果不存在就会自动启动 1234

#!/bin/sh
ps -A | awk '{print $4}' | grep -q '^1234$'
if [ $? -ne 0]; then
/PATH/TO/1234 xx bb
fi
假定这个脚本叫 a.sh
然后用crontab -e增加定时任务

* * * * * /path/to/a.sh
即可。