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
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已经被杀死, 我们等待两分钟, 看进程在定时器下能否自动恢复。

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

原文地址:https://www.cnblogs.com/mhl1003/p/9555144.html

时间: 2024-10-23 23:47:19

Linux如何实现进程监控和守护的相关文章

linux 进程监控

linux 进程监控 monit monit是一个小型的开放源码工具来管理和监控Unix系统.Monit可以自动维护进程,及时避免进程异常退出等产生的问题. 系统: monit可以监控问题的发生,包括进程状态.系统cpu负载.内存占用情况等,例如当apache服务的cpu负载以及内存闸弄情况过高时候,它会重启apache服务. 进程: monit可以监控守护进程,包括系统进程.例如当某个进行down掉,它会自动恢复重启该进程. 文件系统:Monit可以监控本地文件.目录.文件系统的变化,包括时间

Linux系统开发7 进程关系,守护进程

[本文谢绝转载原文来自http://990487026.blog.51cto.com] <大纲> Linux系统开发7  进程关系守护进程 终端 网络终端 Linux PCB结构体信息 进程组 修改子进程.父进程的组ID 会话组 设置一个会话脱离控制终端 生成一个新的会话 守护进程 守护进程模板 获取当前系统时间  终端 在UNIX系统中用户通过终端登录系统后得到一个Shell进程这个终端成为Shell进 程的控制终端Controlling Terminal在讲进程时讲过控制终端是保存在PCB

python监控linux性能以及进程消耗的性能

ExecutorService 建立多线程线程池的步骤: 线程池的作用: 线程池作用就是限制系统中执行线程的数量. 根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果:少了浪费了系统资源,多了造成系统拥挤效率不高.用线程池控制线程数量,其他线程排队等候.一个任务执行完毕,再从队列的中取最前面的任务开始执行.若队列中没有等待进程,线程池的这一资源处于等待.当一个新任务需要运行时,如果线程池中有等待的工作线程,就可以开始运行了:否则进入等待队列. 为什么要用线程池: 1.减少了创建和

Linux环境编程之进程(七):守护进程

守护进程也是一种进程,它由如下特性: 1.生存期较长,在系统自举时启动,仅在系统关闭时终止. 2.没有控制终端,在后台运行. 系统中有很多守护进程,它们执行日常事务活动.如日志进程syslogd.web服务器httpd.邮件服务器sendmail和数据块服务器mysqld等.大多数守护进程都是以超级用户(用户ID为0)特权运行.没有一个守护进程具有控制终端,其终端设置为问号(?),终端前台进程组ID设置为-1.内核守护进程以无控制终端方式启动.用户层守护进程缺少控制终端可能是守护进程调用了set

linux c 笔记 进程控制(二)---守护进程

守护进程(Daemon),一说精灵进程,是指在后台运行的,没有控制终端与之相连的程序.它独立于控制终端周期性地执行某种任务或等待处理某些发生的事件.它是一个生存期较长的进程,守护进程常常在系统引导装入时启动,在系统关闭时终止.Linux系统有很多守护进程,大多数服务都是通过守护进程实现的,同时,守护进程还能完成许多系统任务,例如,作业规划进程crond.打印进程lqd等(这里的结尾字母d就是Daemon的意思).由于在Linux中,每一个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的

Linux/Centos nethogs 按进程监控网络带宽

有很多适用于Linux系统的开源网络监视工具.比如说,你可以用命令iftop来检查带宽使用情况.netstat用来查看接口统计报告,还有top监控系统当前运行进程.但是如果你想要找一个能够按进程实时统计网络带宽利用率的工具,那么NetHogs值得一看. NetHogs是一个开源的命令行工具(类似于Linux的top命令),用来按进程或程序实时统计网络带宽使用率. 来自NetHogs项目网站:"NetHogs是一个小型的net top工具,不像大多数工具那样拖慢每个协议或者是每个子网的速度而是按照

linux下查找进程及终止进程操作的相关命令

使用linux操作系统,难免遇到一些软件"卡壳"的问题,这时就需要使用linux下强大的kill命令来结束相关进程.这在linux系统下是极其容易的事情,你只需要kill xxx即可,这里xxx代表与此软件运行相关的进程PID号.首先,我们需要使用linux下另外一个命令ps查找与进程相关的PID号:ps aux | grep program_filter_word1)ps a 显示现行终端机下的所有程序,包括其他用户的程序.2)ps -A 显示所有程序.3)ps c 列出程序时,显示

Linux进阶之进程与线程

一.进程与线程 1.进程(Process):是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调 度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行 实体:在当代面向线程设计的计算机结构中,进程是线程的容器.程序是指令.数据及其组织形式的描 述,进程是程序的实体.-----------百度百科 在Linux中进程是运行中的程序的一个副本,是被载入内存的一个指令集合,使用进程ID(PID)来标记 各个进程.我们可使用echo $$来查看当前

深入Linux内核架构——进程管理和调度(上)

如果系统只有一个处理器,那么给定时刻只有一个程序可以运行.在多处理器系统中,真正并行运行的进程数目取决于物理CPU的数目.内核和处理器建立了多任务的错觉,是通过以很短的间隔在系统运行的应用程序之间不停切换做到的.由此,以下两个问题必须由内核解决:除非明确要求,否则应用程序不能彼此干扰:CPU时间必须在各种应用程序之间尽可能公平共享(一些程序可能比其他程序更重要).本篇博文主要涉及内核共享CPU时间的方法以及如何在进程之间切换(内核为各进程分配时间,保证切换之后从上次撤销其资源时执行环境完全相同)