博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Daemontools监控管理服务
阅读量:5908 次
发布时间:2019-06-19

本文共 3158 字,大约阅读时间需要 10 分钟。

daemontools 相关的内容可参考 。

daemontools 相关的内容可参考 。
daemontools 相关的内容可参考 。

linux主要使用supervise来管理常驻进程。基于supervise的两个比较重要的工具是Daemontools和Supervisor。

实际上,supervise也算Daemontools的一个工具。Daemontools是svscanboot,svscan,supervise,svc,svok,svstat等一系列工具的合集。

为什么使用Daemontools

参考

Paste_Image.png

增加删除service
只需要在/service中删除或增加link即可
快速启动
在/service中增加服务, 即可自动在五秒内完成启动
可靠重启
service down掉之后,自动重启
简单可靠的控制
配置好 /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
干净的进程状态
重启的service进程,跟第一次启动的一样干净,纯洁无暇
可移植
通过配置 /service,程序能在各个linux系统(Linux, BSD, Solaris, etc)上,按相同的方式运行
安装 和 使用
NOTE: 必须使用 root 运行所有的东西

Step 1 安装:

mkdir -p /packagechmod 1755 /packagecd /packagewget http://cr.yp.to/daemontools/daemontools-0.76.tar.gztar -xpf daemontools-0.76.tar.gzrm -f daemontools-0.76.tar.gzcd admin/daemontools-0.76package/install

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

ed ./src/conf-cc1s/$/ -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.localchmod +x /etc/rc.local

Step 3 创建service:

创建 Services 目录,并链接到 /service。 下例,创建服务 在 /services

mkdir /servicesmkdir /services/somerandomserviceecho -e '#!/bin/sh\nexec somerandomcommand' > /services/somerandomservice/runchmod 755 /services/somerandomservice/runln -s /services/somerandomservice/ /service/

创建链接到 /service 目录, daemontools就会启动service, 这个时候可以检查service的uptime

svstat /service/somerandomservice
可以知道service的状态、pid和运行时间
(note: 如果service的运行时间小于1秒,则可能是run脚本出错,需要调试)

Step 4 指定用户:

使用特定用户运行service, 与上面的运行类似,不过要使用setuidgid 指定用户

mkdir /services/somerandomuserserviceed /services/somerandomuserservice/runa#!/bin/shexec setuidgid somerandomuser somerandomcommand.w!chmod 755 %qln -s /services/somerandomuserservice/ /service/

(note: 以上使用ed编辑,也可以使用其他编辑,实现一样的目的)

除了通过指定uidgid,也可以通过全登录的方式:

mkdir /services/somerandomuserserviceed /services/somerandomuserservice/runa#!/bin/shexec su - somerandomuser -c 'exec somerandomcommand'.w!chmod 755 %qln -s /services/somerandomuserservice/ /service/

Step 5 logger:

配置multilog, 来对service打logger

adduser loggermkdir /services/somerandomservice/logmkdir /services/somerandomservice/log/mainchown logger /services/somerandomservice/log/mained /services/somerandomservice/log/runa#!/bin/shexec setuidgid logger multilog t ./main.w!chmod 755 %q

Step 6 Debug:

检查 run 脚本

cd /service/somerandomservicesvc -d ../run

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

Step 6 检查日志:

cd /service/somerandomservicetail -n5 log/main/current

Step 7 重启service:

svc -t /service/somerandomservice

Step 8 删除service:

rm /service/somerandomservicesvc -dx /services/somerandomservice

作者:zoyanhui

链接:
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

转载于:https://blog.51cto.com/tenderrain/2067395

你可能感兴趣的文章
linux 环境RPM 安装MYSQL5.6
查看>>
Linux文件管理和编辑常用命令
查看>>
bluz-5.47 蓝牙
查看>>
C++ 读写文件
查看>>
海外旅游最常用的100句英语口语
查看>>
http协议进阶(五)连接管理
查看>>
服务器创建好后怎样使用远程连接工具链接的一些问题
查看>>
插件~NuGet与packages管理项目的包包
查看>>
笔试算法题(34):从数字序列中寻找仅出现一次的数字 & 最大公约数(GCD)问题...
查看>>
JS基本功 | JavaScript专题之数组 - 方法总结
查看>>
matlab数字图像处理函数,MATLAB数字图像处理学习(二)|常用函数
查看>>
错误请联系管理员文件 index.php,帝国CMS订单、反馈信息、投稿与留言发邮件通知管理员的方法...
查看>>
小米笔记本装linux教程视频教程,Archlinux安装指南~小米笔记本Air 13.3英寸版本
查看>>
linux卸载nomachine,NoMachine 安装与配置及使用
查看>>
企业shell常见面试题及企业实战案例深入浅出讲解
查看>>
Load Test
查看>>
美文共赏
查看>>
RHEL6入门系列之十七,打包与压缩
查看>>
SQLite 3.7.13的加密解密(二)—— 开放宏定义
查看>>
禁止server 2008域端口的脚本
查看>>