CentOS7安装daemontools

目录

centos7安装daemontools

安装

启动Daemontools

查看svs(supervise)的运行情况,可以发现svscan做为svscanboot的子进程在运行

设置 Daemontools 自启动(on system boot)

创建service

指定用户

logger:

Debug

检查日志

重启service:

 删除service:

centos7安装daemontools

当服务进程因为某些原因(包括kill)挂掉了,daemontools会重新启动这个进程。Daemontools是svscanboot,svscan,supervise,svc,svok,svstat等一系列工具的合集。

安装

mkdir -p /package
chmod 1755 /package
cd /package
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
tar -xpf daemontools-0.76.tar.gz
rm -f daemontools-0.76.tar.gz
cd admin/daemontools-0.76
package/install

 

文件夹权限修改为1755拥有这个属性的目录内创建的东西,除了root和创建者本身,谁都不能删

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

ed ./src/conf-cc            #输入命令   
1s/$/ -include errno.h/     #复制粘贴
wq                          #保存

然后重试  package/install 安装。

启动Daemontools

/command/svscanboot &

&:表示后台运行

查看svs(supervise)的运行情况,可以发现svscan做为svscanboot的子进程在运行

ps -ef | grep svs

CentOS7安装daemontools_第1张图片

通过pstree -a -p 12510来查看进程树

设置 Daemontools 自启动(on system boot)

sed -i "1 a\csh -cf '/command/svscanboot &'" /etc/rc.local
chmod +x /etc/rc.local

创建service

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

mkdir /services
mkdir /services/somerandomservice
echo -e '#!/bin/sh\nexec somerandomcommand' > /services/somerandomservice/run
chmod 755 /services/somerandomservice/run
ln -s /services/somerandomservice/ /service/

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

svstat /service/somerandomservice

可以知道service的状态、pid和运行时间

指定用户

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

mkdir /services/somerandomuserservice
ed /services/somerandomuserservice/run
a
#!/bin/sh
exec setuidgid somerandomuser somerandomcommand
.
w!
chmod 755 %
q
ln -s /services/somerandomuserservice/ /service/

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

mkdir /services/somerandomuserservice
ed /services/somerandomuserservice/run
a
#!/bin/sh
exec su - somerandomuser -c 'exec somerandomcommand'
.
w!
chmod 755 %
q
ln -s /services/somerandomuserservice/ /service/

logger:

配置multilog, 来对service打logger

adduser logger
mkdir /services/somerandomservice/log
mkdir /services/somerandomservice/log/main
chown logger /services/somerandomservice/log/main
ed /services/somerandomservice/log/run
a
#!/bin/sh
exec setuidgid logger multilog t ./main
.
w!
chmod 755 %
q

Debug

检查 run 脚本

cd /service/somerandomservice
svc -d .
./run

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

检查日志

cd /service/somerandomservice
tail -n5 log/main/current

重启service:

svc -t /service/somerandomservice

 删除service:

rm /service/somerandomservice
svc -dx /services/somerandomservice

 

 

你可能感兴趣的:(Linux运维)