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
粘贴如下内容:
*/ * * * * /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 -
此时nginx已经被杀死, 我们等待两分钟, 看进程在定时器下能否自动恢复。
此时看到,当前进程已经启动起来了!
Linux如何实现进程监控和守护的更多相关文章
- linux 进程监控
linux 进程监控 supervise Supervise是daemontools的一个工具,可以用来监控管理unix下的应用程序运行情况,在应用程序出现异常时,supervise可以重新启动指定程 ...
- linux第1天 fork exec 守护进程
概念方面 文件是对I/O设备的抽象表示.虚拟存储器是对主存和磁盘I/O设备的抽象表示.进程则是对处理器.主存和I/O设备的抽象表示 中断 早期是没有进程这个概念,当出现中断技术以后才出现进程这个概念 ...
- Linux系统编程(26)——守护进程
Linux系统启动时会启动很多系统服务进程,比如inetd,这些系统服务进程没有控制终端,不能直接和用户交互.其它进程都是在用户登录或运行程序时创建,在运行结束或用户注销时终止,但系统服务进程不受用户 ...
- linux 进程监控和自动重启的简单实现
目的:linux 下服务器程序会因为各种原因dump掉,就会影响用户使用,这里提供一个简单的进程监控和重启功能. 实现原理:由定时任务crontab调用脚本,脚本用ps检查进程是否存在,如果不存在则重 ...
- linux 进程监控和自动重启的简单实现(转)
目的:linux 下服务器程序会因为各种原因dump掉,就会影响用户使用,这里提供一个简单的进程监控和重启功能. 实现原理:由定时任务crontab调用脚本,脚本用ps检查进程是否存在,如果不存在则重 ...
- Linux进程托管与守护进程设置
引言 在上一篇<Linux启动之旅>中,我们了解了Linux启动过程,在该过程的最后一步,init进程拉起/etc/init.d/rcN.d/目录下指定的守护进程(daemon).假若自定 ...
- Linux下,如何监控某个进程到底向哪个地址发起了网络调用
Linux下,如何监控某个进程到底向哪个地址发起了网络调用 有时候,有些应用,比如idea,你发起某个操作时,其底层会去请求网络,获取一些数据. 但是不知道,请求了什么地址.举个例子,在idea中,m ...
- linux c语言学习笔记之守护进程
哈尔滨理工大学软件工程专业08-7李万鹏原创作品,转载请标明出处 http://blog.csdn.net/woshixingaaa/archive/2010/06/06/5651095.aspx 守 ...
- linux下的进程、网络、性能监控命令
进程监控 端口 1)netstat -anp | grep xxx 2)lsof -i:<port> 句柄 lsof -n | grep xxxx 线程栈 1)gst ...
随机推荐
- 什么是内部类? Static Nested Class 和 Inner Class 的不同。
什么是内部类? Static Nested Class 和 Inner Class 的不同. 内部类就是在一个类的内部定义的类,内部类中不能定义静态成员(静态成员不是对象的特性,只是为了 ...
- 论文阅读笔记四十六:Feature Selective Anchor-Free Module for Single-Shot Object Detection(CVPR2019)
论文原址:https://arxiv.org/abs/1903.00621 摘要 本文提出了基于无anchor机制的特征选择模块,是一个简单高效的单阶段组件,其可以结合特征金字塔嵌入到单阶段检测器中. ...
- CS DevExpress程序启动(主窗体初始化优化)
在进入程序主界面时,某些情况下主界面的初始化会消耗很长时间,例如一些复杂的业务系统,可能会从服务器上下载最新的数据进行展示等等,在这种情况下,我们可以采用一个进度界面展示“系统正在加载...”,等主界 ...
- python---单向循环链表实现
这个判断比较多了. 一次审准,注释作好, 以后就可以照搬这些功能代码了. # coding = utf-8 # 单向循环链表 class Node: def __init__(self, new_da ...
- tensorflow 传入值-【老鱼学tensorflow】
上个文章中讲述了tensorflow中如何定义变量以及如何读取变量的方式,本节主要讲述关于传入值. 变量主要用于在tensorflow系统中经常会被改变的值,而对于传入值,它只是当tensorflow ...
- 无法执行该VI,必须使用LabVIEW完整版开发系统才可以解决该错误
该错误99%是因为你在某个vi中使用了外部系统组件,比如api,.net组件,ActiveX组件,com组件,所有不是Labview原生的接口,在你打包后,在其他没有安装这些组件的电脑上运行,就会出现 ...
- css结构选择器组合使用,选择父元素中多个子元素中某一段元素
nth-of-type()和nth-child()写法一样,这里只用nth-of-type()演示,习惯type 直接上代码 /* 从前向后选择,第6个开始 */ li:nth-of-type(n+6 ...
- Linux内核原理与分析-第二周作业
写之前回看了一遍秒速五厘米:如果
- 作业二 | Git的安装与使用
作业要求来自https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2097 GitHub远程仓库的地址https://github.com/k ...
- LINUX更改桌面的分辨率
命令行 输入xrandr 输入xrandr命令后可以看到系统的一些分辨率的列表, 和当前系统屏幕的分辨率信息,可以通过命令的 相应参数对系统分辨率的一些设置操作. xrandr -s 0 全屏 xra ...