目录
centos7安装daemontools
安装
启动Daemontools
查看svs(supervise)的运行情况,可以发现svscan做为svscanboot的子进程在运行
设置 Daemontools 自启动(on system boot)
创建service
指定用户
logger:
Debug
检查日志
重启service:
删除service:
当服务进程因为某些原因(包括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
安装。
/command/svscanboot &
&:表示后台运行
ps -ef | grep svs
通过pstree -a -p 12510来查看进程树
sed -i "1 a\csh -cf '/command/svscanboot &'" /etc/rc.local
chmod +x /etc/rc.local
创建 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/
配置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
检查 run 脚本
cd /service/somerandomservice
svc -d .
./run
检查,修复bug之后,使用svc -u /service/somerandomservice
启动服务
cd /service/somerandomservice
tail -n5 log/main/current
svc -t /service/somerandomservice
rm /service/somerandomservice
svc -dx /services/somerandomservice