supervise进程管理利器

Daemontools是一个包含了很多管理Unix服务的工具的软件包。其中最核心的工具是supervise,它的功能是监控一个指定的服务,当该服务进程消亡,则重新启动该进程。

而要添加让supervise监控的服务非常容易,只需要添加一个被监控的服务的目录,在该目录中添加启动服务器的名字为run的脚本文件即可。

supervisor是所有项目的父进程:

supervisor(pid=29208)会成为主进程,管理各个项目的进程。

当项目A(pid=11531)挂掉,supervisor根据设置autorestart、startretries是否重启。

若要重启,则会重启项目A(pid=13357),

若不重启,则项目A(pid=0)。

当supervisor被kill,管理的项目全部死掉,重启supervisor(pid=14140),管理的项目都重启;

应用

在此处我使用supervisor 管理 flume 的agent,当agent 挂掉之后自动重启。

supervise安装

  1. 获取supervise 安装包:
    点我下载:daemontools-0.76.tar.gz
  2. 新建文件夹supervise
  3. 下载daemontools-0.76.tar.gz 到 supervise 目录下
    解压daemontools-0.76.tar.gz
# tar -zxvf daemontools-0.76.tar.gz 
# cd admin/daemontools-0.76 

这里写图片描述

4.编辑conf-cc,在conf-cc 最后加上

 vi src/conf-cc
 -include /usr/include/errno.h 

如图所示
这里写图片描述

5.执行安装命令(此命令需要安装过gcc。如果没有安装gcc 需要安装 gcc )

# package/install 
// CentOS 安装gcc 命令
yum -y install gcc gcc-c++ autoconf make

6.检查安装

# cat /etc/inittab 

如果出现如下图所示则安装成功。
supervise进程管理利器_第1张图片

编写小程序测试

supervise添加监控的服务非常容易,只需要添加一个被监控的服务的目录,在该目录中添加启动服务器的名字为run的脚本文件即可。

此处编写一个简单的c程序,进行测试。

  1. 建立一个test目录,进入该目录
  2. 编写简单测试程序test.c 内容如下:
#include 
#include 
int main()
{
        int ix = 0;
        for(;; ix++)
        {
                printf("%d ", ix);
                sleep(1);
        }
        return 0;
}

3.编译test.c输出为test。

gcc -o test test.c

4.在test目录下编写脚本run(注意:名字必须为run。注意run 脚本里不能后台启动。),来执行test程序,以便supervise进行调用

#!/bin/sh
echo "start test!"
./test

5.启动

nohup supervise test/  > /dev/null 2>&1 &

6.检查test进程

ps -ef| grep "test"

如下图:
这里写图片描述

此时我门模拟杀死 test 进程。则test进程会重启。
(我门可以看到重启的test 进程为 21099)

这里写图片描述

如果要杀死 test进程怎么办呢?
很简单先杀死 supervise 的守护进程就好了。也就是杀死上图的 21080 进程。杀死守护进程以后再杀死test 进程就不会重启test 进程了。

好了今天就说到这里吧。

你可能感兴趣的:(4.linux)