linux daemontools 安装

daemontools是一款unix服务管理软件,提供一组工具来进行管理用户的一系列进程。Daemontools包含svscanboot,svscan,supervise,svc,svok,svstat等一系列工具。daemontools主要有一下特点:

  1. 增加删除service:只需要在/service中删除或增加link即可
  2. 快速启动:在/service中增加服务, 即可自动在五秒内完成启动
  3. 可靠重启:service down掉之后,自动重启
  4. 简单可靠的控制:配置好 /service 之后, 使用svc命令,可以控制service daemon。
  5. 干净的进程状态:重启的service进程,跟第一次启动的一样干净,纯洁无暇
  6. 可移植:通过配置 /service,程序能在各个linux系统(Linux, BSD, Solaris, etc)上,按相同的方式运行
1、daemontools的安装:

daemontools的官网:http://cr.yp.to/daemontools.html
daemontools的官网安装说明:http://cr.yp.to/daemontools/install.html

1)下载、解压:

cd /usr/local/src
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
tar -xvzf daemontools-0.76.tar.gz

2)编译安装:

cd admin/daemontools-0.76
package/install

注:如果系统没有安装gcc会报错,执行

yum -y install gcc

3)报错处理:

这时因为gcc版本太高很容易出现一个错误:

/usr/bin/ld: errno: TLS definition in /lib64/libc.so.6 section .tbss mismatches non-TLS reference in envdir.o

/lib64/libc.so.6: could not read symbols: Bad value

collect2: ld returned 1 exit status

make: *** [envdir] Error 1

Copying commands into ./command...

cp: cannot stat `compile/svscan': No such file or directory
解决方法:

cd src
wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch
patch < daemontools-0.76.errno.patch
cd ..
package/install
其中daemontools-0.76.errno.patch内容如下:
diff -ur daemontools-0.76.old/src/error.h daemontools-0.76/src/error.h
--- daemontools-0.76.old/src/error.h	2001-07-12 11:49:49.000000000 -0500
+++ daemontools-0.76/src/error.h	2003-01-09 21:52:01.000000000 -0600
@@ -3,7 +3,7 @@
 #ifndef ERROR_H
 #define ERROR_H
 
-extern int errno;
+#include 
 
 extern int error_intr;
 extern int error_nomem;


2、简单介绍:

1)装完daemontools后,cat /etc/inittab中会自动增加如下:

SV:123456:respawn:/command/svscanboot

2)装完后,会自动创建会创建两个目录,分别是/service和/command.
在/service目录下添加一个文件夹(或者创建软连接),然后再在其中创建run可执行文件, 并在run文件中设置自己想启动的服务就可以了,写好run服务之后,daemontools会自动发现并且启动起来.

3、可以直接使用supervise来对进程保护:

1)创建run脚本,启动你的服务;

2)创建start.sh脚本,内容:

使用suerpvise来启动你的服务,supervise会自动找到run脚本(start.sh脚本中表示run和start.sh在同一个目录)

nohup /data/apps/admin/daemontools/command/supervise . >/dev/null 2>&1 &
3)创建stop.sh脚本,内容:

#!/bin/bash

echo 'starting....'

SV=supervise

result=`ps -ef | grep $SV | grep -v grep`
if [ -z "$result" ];then
  echo "no kill supervise"
else
  echo "kill supervise"
  ps -ef | grep $SV | grep -v grep | awk '{print $2}' | xargs kill && wait
fi

SN=tth5engine-server
result=`ps -ef | grep $SN | grep -v grep`
if [ -z "$result" ];then
  echo "no kill $SN"
else
  echo "kill $SN"
  ps -ef | grep $SN | grep -v grep | awk '{print $2}' | xargs kill && wait
fi

echo 'finish'

先killsupervise然后再杀服务。

你可能感兴趣的:(daemontools,supervise,linux)