Linux如何实现进程监控和守护

Posted 小马哥的春天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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已经被杀死, 我们等待两分钟, 看进程在定时器下能否自动恢复。

 

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

 

以上是关于Linux如何实现进程监控和守护的主要内容,如果未能解决你的问题,请参考以下文章

linux 如何实现java守护进程编程开发

linux怎么用守护进程和sdl

守护进程监控/登录 linux(应用程序计数器)

写一个linux下写个关于c语言的双守护进程,就是监视一个进程,当其死掉,马上将其重启

Linux系统中的守护进程讲解

crond守护进程实现定时监控某进程占有内存的大小