linux主要使用supervise来管理常驻进程。基于supervise的两个比较重要的工具是Daemontools和Supervisor。
实际上,supervise也算Daemontools的一个工具。Daemontools是svscanboot,svscan,supervise,svc,svok,svstat等一系列工具的合集。

为什么使用Daemontools

参考这里

Paste_Image.png

  1. 增加删除service
    只需要在/service中删除或增加link即可
  2. 快速启动
    在/service中增加服务, 即可自动在五秒内完成启动
  3. 可靠重启
    service down掉之后,自动重启
  4. 简单可靠的控制
    配置好 /service 之后, 使用svc命令,可以控制service daemon。 比如:
  • svc -h /service/yourdaemon:
    sends HUP
  • svc -t /service/yourdaemon:
    sends TERM, and automatically restarts the daemon after it dies
    *svc -d /service/yourdaemon:
    sends TERM, and leaves the service down
  • svc -u /service/yourdaemon:
    brings the service back up
  • svc -o /service/yourdaemon:
    runs the service once
  1. 干净的进程状态
    重启的service进程,跟第一次启动的一样干净,纯洁无暇
  2. 可移植
    通过配置 /service,程序能在各个linux系统(Linux, BSD, Solaris, etc)上,按相同的方式运行

安装 和 使用

NOTE: 必须使用 root 运行所有的东西

  • Step 1 安装:
mkdir -p /package
chmod 1755 /package
cd /package
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
tar -xpf daemontools-0.76.tar.gz
rm -f daemontools-0.76.tar.gz
cd admin/daemontools-0.76
package/install

如果 package/install 失败,则编辑 ./src/conf-cc文件,增加-include errno.h/

ed ./src/conf-cc
1s/$/ -include errno.h/
wq

或者

vim ./src/conf-cc
增加gcc配置 -include errno.h

然后重试package/install安装

  • Step 2 启动:
    启动 Daemontools
apt-get install csh "(for Ubuntu/Debian users)"
csh -cf '/command/svscanboot &'

设置 Daemontools 自启动(on system boot)

sed -i "1 a\csh -cf '/command/svscanboot &'" /etc/rc.local
chmod +x /etc/rc.local
  • Step 3 创建service:
    创建 Services 目录,并链接到 /service。 下例,创建服务 在 /services
mkdir /services
mkdir /services/somerandomservice
echo -e '#!/bin/sh\nexec somerandomcommand' > /services/somerandomservice/run
chmod 755 /services/somerandomservice/run
ln -s /services/somerandomservice/ /service/

创建链接到 /service 目录, daemontools就会启动service, 这个时候可以检查service的uptime
svstat /service/somerandomservice
可以知道service的状态、pid和运行时间
(note: 如果service的运行时间小于1秒,则可能是run脚本出错,需要调试)

  • Step 4 指定用户:
    使用特定用户运行service, 与上面的运行类似,不过要使用setuidgid 指定用户
mkdir /services/somerandomuserservice
ed /services/somerandomuserservice/run
a
#!/bin/sh
exec setuidgid somerandomuser somerandomcommand
.
w!
chmod 755 %
q
ln -s /services/somerandomuserservice/ /service/

note: 以上使用ed编辑,也可以使用其他编辑,实现一样的目的)
除了通过指定uidgid,也可以通过全登录的方式:

mkdir /services/somerandomuserservice
ed /services/somerandomuserservice/run
a
#!/bin/sh
exec su - somerandomuser -c 'exec somerandomcommand'
.
w!
chmod 755 %
q
ln -s /services/somerandomuserservice/ /service/
  • Step 5 logger:
    配置multilog, 来对service打logger
adduser logger
mkdir /services/somerandomservice/log
mkdir /services/somerandomservice/log/main
chown logger /services/somerandomservice/log/main
ed /services/somerandomservice/log/run
a
#!/bin/sh
exec setuidgid logger multilog t ./main
.
w!
chmod 755 %
q
  • Step 6 Debug:
    检查 run 脚本
cd /service/somerandomservice
svc -d .
./run

检查,修复bug之后,使用svc -u /service/somerandomservice 启动服务

  • Step 6 检查日志:
cd /service/somerandomservice
tail -n5 log/main/current
  • Step 7 重启service:
svc -t /service/somerandomservice
  • Step 8 删除service:
rm /service/somerandomservice
svc -dx /services/somerandomservice

作者:zoyanhui
链接:https://www.jianshu.com/p/a5bf164879b7
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

使用Daemontools监控管理服务相关推荐

  1. GPS监控系统用于车辆实时定位,轨迹回放,电子围栏监控管理服务

    GPS监控系统是一套可以管理实时位置,轨迹回放,电子围栏,报警统计等功能的综合系统! GPS设备发送位置数据到后台服务器,经过后台算法解析,纠偏,过滤等处理将位置数据展示在WEB前端和APP端,然后通 ...

  2. (四)RabbitMQ消息队列-服务详细配置与日常监控管理

    (四)RabbitMQ消息队列-服务详细配置与日常监控管理 原文:(四)RabbitMQ消息队列-服务详细配置与日常监控管理 RabbitMQ服务管理 启动服务:rabbitmq-server -de ...

  3. 全方位事件监控管理,阿里云日志服务Kubernetes事件中心正式上线

    2020年2月21日,阿里云日志服务Kubernetes事件中心正式上线,为Kubernetes事件提供集中化采集.存储.分析.可视化.告警等能力,帮助Kubernetes使用者快速构建准实时.高可靠 ...

  4. CentOS6.9安装daemontools工具管理服务进程

    最近工作中用到了daemontools工具来管理服务进程,再次总结下. 当服务进程因为某些原因(包括kill)挂掉了,daemontools会重新启动这个进程 环境介绍: CentOS 6.9 x86 ...

  5. Supervise 系统进程监控管理

    写在最前: 在项目中总会存在一些意想不到的的问题,导致任务出错中断停止,我们需要去监控任务的执行状态,并当进程执行失败的时候进行重启. Daemontools 是一个包含了很多管理 Unix 服务的工 ...

  6. 如何使用Azure API管理服务?

    对打通云应用之间的通信而言,API至关重要,正确管理这些API也非常关键.让我们从学习Azure的API服务来开始这一进程. 在云和微服务架构时代,API是数字化业务的通用语言.根据分析公司Forre ...

  7. IBM整合管理服务:云时代驱动IT服务创新

    本文讲的是IBM整合管理服务:云时代驱动IT服务创新[IT168 专稿]日前,IBM全球信息科技服务部(GTS)在位于苏州工业园区的苏州国科数据中心举办IBM管理服务中心开业仪式.该整合管理服务中心坐 ...

  8. Spark源码阅读02-Spark核心原理之监控管理

    监控管理 监控管理 UI监控 实时UI监控 历史UI监控 Metrics 输入源(Metrics Source)介绍 输出方式(Metrics Sink)介绍 TEST 监控管理 Spark提供了UI ...

  9. Zabbix监控httpd服务

    Zabbix监控httpd服务 一.工作要求及目的 二.WEB配置步骤 1.进入监控主机列表 2.链接模板 3.查看自定义HTTP端口监控项 4.查看自定义的触发器 三.客户端测试http服务停止报警 ...

  10. 【APP】centos 5.X安装网络和系统监控管理平台--OpenNMS

    关于OpenNMS:OpenNMS是一个企业级基于Java/XML的分布式网络和系统监控管理平台.OpenNMS是你管理网络的绝好工具,它能够显示你网络中各中终端和服务器的状态和配置,为你方便地管理网 ...

最新文章

  1. Linux 服务器上快速配置阿里巴巴 OPSX NTP服务
  2. Ubuntu 14.04 64位机上配置Android Studio操作步骤
  3. WampServer详解
  4. 皮一皮:自作多情的表率...
  5. 如何通过redisTemplate获得key的过期时间
  6. Nacos命名空间管理
  7. List列表的万能的适配器
  8. IDEA中引入Bootstrap并展示第一个模板
  9. Angular / RxJs我应该何时退订`Subscription`
  10. java8 treemap 排序_java中TreeMap排序的示例代码
  11. 52_LSTM及简介,RNN单元的内部结构,LSTM单元的内部结构,原理,遗忘门,输入门,输出门,LSTM变体GRU,LSTM变体FC-LSTM,Pytorch LSTM API介绍,案例(学习笔记)
  12. 为地图marker 设置网络图片
  13. 基于华为云轻松搭建属于自己的网站 (Linux,Apache,MySQL,PHP)
  14. 分布式资源管理与任务调度框架Yarn
  15. WEB学习——JavaScript
  16. 文本分类模型学习笔记
  17. Notion中的Tex数学表达式(完整版)
  18. MySQL隔离级别--未提交读,提交读,可重复读,序列化--详解(有示例)
  19. 【LeetCode】377. 组合总和 Ⅳ(错题2刷)
  20. 2020汽车消费把脉:如何挠到年轻消费者的内心?

热门文章

  1. 单片机驱动mos管电路图
  2. React脚手架创建项目
  3. 单机:Oracle单机数据库一键安装(11GR2/12C/18C/19C/21C)
  4. ​ 解决金仓数据库KingbaseES对pg模式的单机数据库插入数据时,出现日志打印的问题
  5. BP神经网络学习算法原理
  6. Gitlab:从其它项目组里导入一个项目
  7. 4.1 手工编写第一个Jmeter性能测试脚本
  8. 映美精黑白相机在linux平台上的使用(一)
  9. 微信html5 video自动播放,【微信H5开发】audio/video标签的自动播放
  10. 记一次成功修复U盘的痛苦经历