最近新搭建的亚马逊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如何实现进程监控和守护的更多相关文章

  1. linux 进程监控

    linux 进程监控 supervise Supervise是daemontools的一个工具,可以用来监控管理unix下的应用程序运行情况,在应用程序出现异常时,supervise可以重新启动指定程 ...

  2. linux第1天 fork exec 守护进程

    概念方面 文件是对I/O设备的抽象表示.虚拟存储器是对主存和磁盘I/O设备的抽象表示.进程则是对处理器.主存和I/O设备的抽象表示 中断 早期是没有进程这个概念,当出现中断技术以后才出现进程这个概念 ...

  3. Linux系统编程(26)——守护进程

    Linux系统启动时会启动很多系统服务进程,比如inetd,这些系统服务进程没有控制终端,不能直接和用户交互.其它进程都是在用户登录或运行程序时创建,在运行结束或用户注销时终止,但系统服务进程不受用户 ...

  4. linux 进程监控和自动重启的简单实现

    目的:linux 下服务器程序会因为各种原因dump掉,就会影响用户使用,这里提供一个简单的进程监控和重启功能. 实现原理:由定时任务crontab调用脚本,脚本用ps检查进程是否存在,如果不存在则重 ...

  5. linux 进程监控和自动重启的简单实现(转)

    目的:linux 下服务器程序会因为各种原因dump掉,就会影响用户使用,这里提供一个简单的进程监控和重启功能. 实现原理:由定时任务crontab调用脚本,脚本用ps检查进程是否存在,如果不存在则重 ...

  6. Linux进程托管与守护进程设置

    引言 在上一篇<Linux启动之旅>中,我们了解了Linux启动过程,在该过程的最后一步,init进程拉起/etc/init.d/rcN.d/目录下指定的守护进程(daemon).假若自定 ...

  7. Linux下,如何监控某个进程到底向哪个地址发起了网络调用

    Linux下,如何监控某个进程到底向哪个地址发起了网络调用 有时候,有些应用,比如idea,你发起某个操作时,其底层会去请求网络,获取一些数据. 但是不知道,请求了什么地址.举个例子,在idea中,m ...

  8. linux c语言学习笔记之守护进程

    哈尔滨理工大学软件工程专业08-7李万鹏原创作品,转载请标明出处 http://blog.csdn.net/woshixingaaa/archive/2010/06/06/5651095.aspx 守 ...

  9. linux下的进程、网络、性能监控命令

    进程监控 端口   1)netstat -anp | grep xxx   2)lsof  -i:<port> 句柄    lsof  -n | grep xxxx 线程栈   1)gst ...

随机推荐

  1. JS使用小记

    1. JSON解析undefined JSON.parse(undefined) VM4456:2 Uncaught SyntaxError: Unexpected token u 2. 事件传值 o ...

  2. 饮冰三年-人工智能-Python-23 Python PyCharm 使用中常见的问题

    一:软件工具使用中遇到的问题 1:AttributeError: module 'pip' has no attribute 'main'问题 处理方法: a:找到JetBrains\PyCharm ...

  3. fire workflow总结

    一.Fire WorkFlow核心1.IPersistenceService存储服务.Fire Workflow 缺省情况下使用hibernate 进行数据库存取.如果你的系统不是使用hibernat ...

  4. 手把手带你使用JS-SDK自定义微信分享效果

    https://www.cnblogs.com/backtozero/p/7064247.html

  5. 如何导出chrome已安装的拓展程序

    如何导出chrome已安装的拓展程序 已安装的chrome插件可以在浏览区中输入*chrome://extensions*便可以查看插件列表. 对于windows系统来说,这些插件对应的目录为: C: ...

  6. Matlab将多项式的系数设为0

    符号运算时有些多项式的系数值接近于0,像这样 fun = 3.5753839759325595498222646101085e-49*x + 1.836709923159824231201150839 ...

  7. SQL反模式学习笔记15 分组

    目标:查询得到每组的max(或者min等其他聚合函数)值,并且得到这个行的其他字段 反模式:引用非分组列 单值规则:跟在Select之后的选择列表中的每一列,对于每个分组来说都必须返回且仅返回一直值. ...

  8. 利用MySQL游标进行计算排名

    SELECT a.id, a.nick_name, a.member_account, a.integral, () AS tRank #计算行号 FROM tzqc_raw_data AS a, ( ...

  9. celery使用

    1.常用命令 (1)启动后台职程 celery worker -A tasks --loglevel=info celery worker -A tasks --loglevel= -A 是指cele ...

  10. 禁用大陆ip段

    https://www.ip2location.com/free/visitor-blocker 有 .htaccess web.config等 以iis为例 打开C:\Windows\System3 ...