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

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

  1. 建立一个test目录,进入该目录
  2. 编写简单测试程序test.c 内容如下:
#include <stdio.h>
#include <stdlib.h>
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 进程了。

好了今天就说到这里吧。

supervise进程管理利器相关推荐

  1. supervise用法_Linux操作下的进程管理利器 Supervise

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

  2. 利用进程管理利器supervise监控并自动重启进程

    一.什么是supervise supervise是Daemontools里的一个核心工具,Daemontools是一个包含了很多管理Unix服务的工具的软件包.而其中最核心的工具就是supervise ...

  3. supervisord 进程管理利器

    Supervisor概述 ​ supervisor是一个 Client/Server模式的系统,允许用户在类unix操作系统上监视和控制多个进程,或者可以说是多个程序.supervisor与launc ...

  4. 绝对Linux服务器管理利器webmin

    用Linux配置服务器绝对是件费时间的事情.虽然外行人看见咱们在黑乎乎屏幕上打着一行行命令代码似乎是很NB,可真实的辛苦也就只有自己知道了.现在好了,有了webmin这款软件,绝对让我们管理服务器时能 ...

  5. 【干货】快速部署微软开源GPU管理利器: OpenPAI

    介绍 不管是机器学习的老手,还是入门的新人,都应该装备上尽可能强大的算力.除此之外,还要压榨出硬件的所有潜力来加快模型训练.OpenPAI作为GPU管理的利器,不管是一块GPU,还是上千块GPU,都能 ...

  6. NodeJS管理利器 - pm2常用命令

    pm2常用命令 pm2是node进程管理器,在服务器上搭建node服务是把利器.最近整理了下常用的一些命令,会持续进行更新. 安装: npm install pm2 -g //安装pm2 pm2 up ...

  7. linux进程通信核心态时间,Linux进程管理简谈

    Linux系统进程管理简谈 进程是什么? 进程是对处理器.主存和I/O设备的抽象表示. 进程是操作系统对一个正在运行的程序的一种抽象,在一个系统上可以同时运行多个进程,而每个进程都好像在独占的使用硬件 ...

  8. 操作系统学习笔记 第二章:进程管理(王道考研)

    本文章基于 2019 王道考研 操作系统 考试复习推荐资料:操作系统复习总结 - 百度文库 (baidu.com) 需要相关电子书的可以关注我的公众号BaretH后台回复操作系统 第一章:操作系统概述 ...

  9. C++ Windows进程管理

    功能: 1.各个进程启动.挂起.恢复.停止等 2.监听进程的运行状态,进程退出(正常.非正常)时,通知用户 3.异步队列 4.线程安全 进程管理器类: #ifndef __ProcessManager ...

  10. php 进程管理,php如何管理进程

    进程管理-防止进程成为僵尸进程 创建好了进程,那么怎么对子进程进行管理呢? 使用信号,对子进程的管理,一般有两种情况:(推荐学习:PHP编程从入门到精通) posix_kill():此函数并不能顾名思 ...

最新文章

  1. 【AI】图示:精确度(查准率)Precision、召回率(查全率)Recall
  2. Win Ser 2008/2012 (R2) + NVIDIA Optimus 笔记本显卡
  3. Ubuntu终端字体颜色方案
  4. POLLERR的故事
  5. 互联网架构“高并发”
  6. 计算机兴趣小组的意义,计算机兴趣小组总结
  7. 基础 - jQuery
  8. 谭浩强C语言(第三版)习题6.11
  9. 序列二次规划——SQP
  10. 刷入第三方 recovery twrp
  11. 微信小程序 — — 实现微信公众号留言功能(附前、后端源码)
  12. 信息化系统软件实施工程师基础技能
  13. 斯托克斯公式(三维中两类曲面和第二类曲线互相转换)
  14. cad画直角命令_在cad中怎么画角度?cad画角度三种方法介绍
  15. 硬盘坏了mysql数据恢复_mysql服务器硬盘损坏后的数据恢复
  16. 比起结果过程更加重要
  17. 2019最新前端薪资报告来啦!前端的工资到底有多高?其实真相是这样的......
  18. 数学物理方程课程感想
  19. 白盒测试与黑盒测试的定义与区别
  20. 即使是个收外卖的前台小妹,也要时刻想着如何咸鱼翻身

热门文章

  1. 智能家居之远程视频监控
  2. WIFI模块AP和STA模式分别是什么意思
  3. 光耦w314的各引脚图_a3140光耦用什么代替
  4. Google Play 上架全流程_2022年谷歌应用商店上架流程
  5. 3D目标检测/点云/遥感数据集汇总
  6. ADC的内部结构与主要参数
  7. 2022-2028年中国农业观光园行业发展战略规划及投资方向研究报告
  8. Unity3d初级编程--Unity官方教程
  9. 什么是Java api
  10. 图灵测试其实已经过时了