daemontools

最近用到了daemontools,却发现百度上基本上没有中文版的,特此分享出来给大家,作者的英语水平也不太好,翻译不对的地方请指正。

1. 简单介绍一下daemontools  点击查看英文原文

daemontools是一个守护进程工具,用来监视一个进程以免其意外退出,例如用来监视某个目录中的一个java程序入口,让它一直处于运行状态。被daemontools守护的进程是无法使用kill指令杀死的,但这样说不准确,实际上是可以杀死的,只是杀死后立即重启。daemontools的设计理念就是这样的。它包括很多程序(或者说是命令)。
如下:

svscanboot: 这条指令非常重要,但是一般不需要自己手动输入执行,它用来启动 /service 目录下的svscan(请看svscan)命令,然后svscan会启动supvise(请看supvise),supvise会执行run脚本并且监视它。安装成功后在Linux重启的时候会自动执行svscanboot。

svscan: 用来启动服务目录下的所有子目录中的supervise(请看supervise)进程,svscan启动两个一对supervise进程,一个子目录s,一个子目录s下的log目录(如果有的话),启动的时候程序会自动运行子目录s中的run脚本,并且监视run脚本启动的进程,同时会启动s/log中的run脚本,这个脚本可以用来输出s目录中的run脚本的日志到指定目录下。s/log中的run脚本请看后边的例子。svscan每五秒检查一次子目录,如果发现新的目录,它会为这个目录启动一个新的supervise进程。如果发现一个已经执行过supervise但是supervise已经退出的目录,它会为这个目录重启supervise进程。svscan被设计成一直运行的,如果无法执行supervise,它会每隔5秒重试一次。

supervise: 这个命令会执行一个目录例如s下的run脚本,如果run脚本存在的话。执行完后run脚本后如果run脚本退出的话它会隔几秒再执行一次。如果s/down文件存在的话,supervise则不会立刻启动run脚本, 可以用svc(请看svc)命令来启动,supervise在s/supervise目录下维护一个二进制格式状态信息,所以这个目录对supervise必须是可写的,svstat(请看svstat)命令可以用来读取这个状态信息。当supervise在s目录中找不到他需要的文件或者已经有了一个supervise在s目录中运行时,supervise退出后不会立刻启动。一旦supervise成功运行起来了它是不会退出的除非被杀死或者被明确的要求退出。

svc:用法:
[plain]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. svc opts services  
opts是一系列的参数,services是一个有supervise监视的目录,以下是所有的选项:
  • -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信号。
  • -: exit, supervise在services停止后会立刻退出, 但是值得注意的是,如果你在一个稳定的系统中使用了这个选项,你已经开始犯错了:supervise被设计成为永远运行的。
svok: 用来检查supervise是否在运行。checks whether supervise is successfully running in the directory named service. It silently exits 0 if supervise is successfully running. It silently exits 100 if supervise is not successfully running. 本人是小白,这个暂时翻译不了,请大牛们跟帖翻译吧。

svstat:用法:
[plain]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. svstat services  
打印出被supverise监视的services运行状态。


2. 在centOS6.4上安装daemontools步骤

首先安装nano编辑器,这个编辑器比vi编辑器方便许多, 输入:yum install nano
  • mkdir -p /package  //创建一个文件夹
  • chmod 1755 /package  //给文件夹改权限
  • cd /package  //进入这个文件夹
  • wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz     //使用wget命令下载daemontools到当前目录下
  • gunzip daemontools-0.76.tar 
  • tar -xpf daemontools-0.76.tar //这两步解压daemontools
  • rm -f daemontools-0.76.tar //  删除安装包
  • cd admin/daemontools-0.76/        //进入到安装文件夹中
  • nano src/conf-cc  //编辑src/conf-cc文件防止在后续安装过程中报错,nano是一个文本编辑器
  • 在打开的编辑窗口中的gcc开头的哪一行的最后面空一格添加  -include /usr/include/errno.h,完成后Ctrl + X 保存退出,不会使用nano编辑器的可以用其他编辑器取代。
  • package/install     //安装
  • cat /etc/inittab  //查看inittab,在其中可以看到这一行:SV:123456:respawn:/command/svscanboot was appended.
  • 注意:原文中介绍的加入开机启动的方法在centos6.4 中已经失效,如果同学们重启之后daemontools没有启动的话就说明失效了,使用svstat 服务目录  来查看服务是否启动。我们使用新的方法
  • 删除 /etc/iinittab中刚才添加的那一行: SV:123456: respawn....... ,因为没有用
  • cd /etc/init
  • nano svscan.conf                        创建一个名叫svscan.conf的新文件
  • 在其中加入
	start on runlevel [345]
    	respawn
    	exec /command/svscanboot
  
  
  • 然后让init重新加载配置,并且开始svscanboot就可以了
  • initctl reload-configuration
  • initctl start svscan
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值