linux daemontools 安装 男娘i 2021-06-24 15:58 265阅读 0赞 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 <errno.h> 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然后再杀服务。
还没有评论,来说两句吧...