linux主要使用supervise来管理常驻进程。基于supervise的两个比较重要的工具是Daemontools和Supervisor。
实际上,supervise也算Daemontools的一个工具。Daemontools是svscanboot,svscan,supervise,svc,svok,svstat等一系列工具的合集。
参考这里
Paste_Image.png
NOTE: 必须使用 root 运行所有的东西
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
如果 package/install
失败,则编辑 ./src/conf-cc
文件,增加-include errno.h/
:
ed ./src/conf-cc
1s/$/ -include errno.h/
wq
或者
vim ./src/conf-cc
增加gcc配置 -include errno.h
然后重试package/install
安装
apt-get install csh "(for Ubuntu/Debian users)"
csh -cf '/command/svscanboot &'
设置 Daemontools 自启动(on system boot)
sed -i "1 a\csh -cf '/command/svscanboot &'" /etc/rc.local
chmod +x /etc/rc.local
/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的uptimesvstat /service/somerandomservice
可以知道service的状态、pid和运行时间
(note: 如果service的运行时间小于1秒,则可能是run脚本出错,需要调试)
setuidgid
指定用户mkdir /services/somerandomuserservice
ed /services/somerandomuserservice/run
a
#!/bin/sh
exec setuidgid somerandomuser somerandomcommand
.
w!
chmod 755 %
q
ln -s /services/somerandomuserservice/ /service/
(note: 以上使用ed
编辑,也可以使用其他编辑,实现一样的目的)
除了通过指定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/
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
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
作者:zoyanhui
链接:https://www.jianshu.com/p/a5bf164879b7
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。