daemontools的安装、简介
最近在工作中用到了daemontools工具来管理服务进程。这里总结一下。
当服务进程因为某些原因(包括kill)挂掉了,daemontools会重新启动这个进程。
安装方法
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
tar xvzf daemontools-0.76.tar.gz
cd admin/daemontools-0.76
sudo package/install
注意:上面的最后一条命令的package表示daemontools-0.76目录下的package目录,而不是一个package命令(我犯了这个错误,真是。。。,记录一下)。
之所以要使用sudo是因为,install脚本会在根目录/下创建两个目录:/service和/command目录。其中/service目录用来存放被daemontools管理的进程,注意在/service目录下存放的只能是连接。/command命令下存放的是daemontools的一些常用命令。
启动daemontools工具:
/command/svscanboot &
&后台运行
这时看下svs(supervise)的运行情况:
ps -ef | grep svs
这里解释下ps命令的参数ef。一直都在用ps -ef这个命令查看系统中运行的进程,都忘记参数ef的含义了。
从ps -ef | grep svs的输出可以看到svscan作为svscanboot的子进程在运行。而且svscan监听的目录是/service目录。
可以通过pstree -a -p 6927来看看进程树:
其中pstree的参数-a -p的含义如下所示:
daemontools的简单介绍
daemontools是一个守护进程工具,防止用户进程意外退出。daemontools的工具有:
常用的有以下5个:
(1)svscanboot
这个命令一般不用手动输入执行,因为这个一般会随Linux系统的启动而自动启动。像我在Mint17.2安装完daemontools之后会提示我重启系统,当然我没有重启系统,而是使用的上面的方式启动的。看下/etc/rc.local就可以直到它会随Linux的启动而启动:
设置某个进程随系统启动的方法可以参考这个:http://cr.yp.to/daemontools/start.html
svscanboot启动之后会启动svscan,svscan会启动supervise,supervise会启动并监听/service中存放服务目录下的run可执行文件。
(2)svscan
svscan会为/service目录下所有服务启动supervise进程。svscan会为每个服务启动一对supervise服务:一个s子目录(即服务进程的工程目录),其实是个软连接;一个是s子目录下的log目录(如果有的话)。supervise会执行s子目录下的run脚本,并监听run脚本启动的进程,同时会启动s/log目录下的run脚本。这个s/log目录下的run脚本用来输出s目录run脚本的日志到指定目录。svscan每隔5s检查下/service目录,如果有新的服务,则启动新的supervise;如果有supervise意外退出会重新启动supervise。
(3)supervise
supervise用来执行/service目录下服务的run脚本。如果run脚本退出的话,会每隔几秒执行一下。在/service下的服务目录s下会有一个supervise目录用来存放进程状态的二进制格式信息。svstate就会读取这个状态信息。
(4)svc命令
svc opts services
opts是一系列的参数,services是指/service下的服务目录。opts参数如下:
-u : up, 如果services没有运行的话,启动它,如果services停止了,重启它。
-d : down, 如果services正在运行的话,给它发送一个TERM(terminate)信号,然后再发送一个CONT(continue)信号,在它停止后,不再启动它。
-o : once, 如果services没有运行,启动它,但是在它停止后不再启动了。就是只运行一次。
-p : pause, 给services发送一个停止信号。
-c : continue, 给services发送一个CONT信号。
-h : hang up, 给services发送一个HUP信号。
-a : alarm, 给services发送一个ALRM信号。
-i : interrupt, 给services发送一个INT信号。
-t : Terminate, 给services发送一个TERM信号。
-k : kill, 给services发送一个KILL信号。
-x : exit, supervise在services停止后会立刻退出, 但是值得注意的是,如果你在一个稳定的系统中使用了这个选项,你已经开始犯错了:supervise被设计成为永远运行的。
关掉一个服务进程通常使用-dk参数,此时supervise进程并没有关闭,所以依然可以将这个服务进程重启。即使,supervice进程挂掉了,svscan依然会重启supervise,supervise会重新运行服务进程的run脚本。
Interface svc opts services
opts is a series of getopt-style options. services consists of any number of arguments, each argument naming a directory used by supervise.
svc applies all the options to each service in turn. Here are the options:
-u: Up. If the service is not running, start it. If the service stops, restart it.
-d: Down. If the service is running, send it a TERM signal and then a CONT signal. After it stops, do not restart it.
-o: Once. If the service is not running, start it. Do not restart it if it stops.
-p: Pause. Send the service a STOP signal.
-c: Continue. Send the service a CONT signal.
-h: Hangup. Send the service a HUP signal.
-a: Alarm. Send the service an ALRM signal.
-i: Interrupt. Send the service an INT signal.
-t: Terminate. Send the service a TERM signal.
-k: Kill. Send the service a KILL signal.
-x: Exit. supervise will exit as soon as the service is down. If you use this option on a stable system, you’re doing something wrong; supervise is designed to run forever.
(5)svstat
查看服务的状态
参考资料:
1. 进程的守护神 - daemontools
2. 在CentOS 6.4上安装daemontools(守护进程工具)
daemontools的安装、简介相关推荐
- python3.7版本简介_python3.7.2各平台安装简介
python3.7.2各平台安装简介 Python官网:https://www.python.org/ Python文档下载地址:https://www.python.org/doc/ Unix &a ...
- 《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
文章目录 8.Docker常规安装简介 8.1 docker常规安装总体步骤 8.2安装tomcat 8.3 安装mysql 8.3.1 docker hub上面查找mysql镜像 8.3.2 从do ...
- Python爬虫之Scrapy框架系列(1)——初识Scrapy框架【安装+简介+运行流程+组件介绍】
目录: 1.Scrapy模块安装 2.Scrapy框架简介 2.1 Scrapy是个啥? 2.2 我们为啥要用这玩意呢? 3.运行流程 3.1 引入: 3.2 进入正题: 3.3 数据流: 3.4 中 ...
- linux软件安装简介(apt和dpkg)
之前博文中提到过以源代码的方式来安装软件,也就是利用tarball进行软件的安装,但是比较麻烦,每次安装都需要检测操作系统与环境,设置编译参数,实际的编译等 如果我的linux系统和厂商的系统一模一样 ...
- wso2 安装_WSO2注册表安装简介
wso2 安装 这篇文章基于有关注册表安装及其工作原理等常见问题.以下是人们提出的主要问题: 1). 安装如何工作? 2). Config Registry和Governance Registry有什 ...
- WSO2注册表安装简介
这篇文章基于有关注册表安装及其工作方式等常见问题.以下是人们提出的主要问题: 1). 安装如何工作? 2). Config Registry和Governance Registry有什么区别? 3). ...
- MySQL-Front的安装简介
本博文在作者的个人网站.博客园和CSDN同步发表,如要转载,请标明原作者和出处. 最近在学习MySQL数据库,开始的时候使用的Windows的命令行进行最基本的代码的输入,可是后来就觉得比较麻烦了,于 ...
- redis 安装简介
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的 ...
- wso2_WSO2注册表安装简介
wso2 这篇文章基于有关注册表安装及其工作方式等常见问题.以下是人们提出的主要问题: 1). 安装如何工作? 2). Config Registry和Governance Registry有什么区别 ...
- 第八章 Docker常规安装简介
1.总体步骤 1.搜索镜像 2.拉取镜像 3.查看镜像 4.启动镜像 服务端口映射 5.停止容器 6.移除容器 2.安装tomcat docker hub上面查找tomcat镜像 docker sea ...
最新文章
- Dsquery和Csvde命令的使用
- Python:图片懒加载技术
- php模拟socket一次连接,多次发送数据的实现
- Calendar类的常用成员方法
- SAP Spartacus table cell如何通过cxOutlet在运行时动态注入组件
- 谈谈我的程序人生程序生涯-飞鸽传书
- 在modelarts上部署mask-rcnn模型
- 《Linux 性能及调优指南》1.4 硬盘I/O子系统
- 抖音品质建设 - iOS启动优化《原理篇》
- Atitit java rest mvc微服务原理以及框架选型 目录 第一节 Mvc原理 model controler view	1 第二章 Spark 最简单	1 第一节 Sprbt to
- SysCeo_Win7_Classic_V7.8_32位+64位(6in1)纯净经典版
- dwg格式的计算机图,例举电脑dwg文件怎么打开
- 九、多线程(高琪java300集+java从入门到精通笔记)
- http网站快捷免费升级到https
- 我用二手书,在这里换了一大箱好书
- cp 出现 omitting directory
- 6.2 Characteristic Values
- uname命令使用和uname系统调用
- 华东交通大学计算机调剂,【通知】华东交通大学2020年硕士研究生调剂通知
- 蓝桥杯 Python 练习题 数字游戏
热门文章
- php 常见的视频格式转换
- 用selenium IDE编写自动化测试脚本
- 机器视觉硬件之工业相机(一)
- tpadmin导入数据库问题
- 温泉酒店加颜色透明matlab,通达信颜色透明代码,通达信,有条件的填充背景颜色,求源码...
- c51汇编语言如何定义全局变量_汇编语言程序访问C语言全局变量
- Oracle执行计划使用分析SQL执行效率
- c语言中动态内存分配的作用,C语言中动态内存的分配(malloc,realloc)
- 网站建设备案和不备案的一些疑惑问题大全
- Hexo Theme NexT 主题个性化配置最佳实践