daemontools is a collection of tools for managing UNIX services.

它用于监控服务的运行状态, 如果服务退出, 则会自动重启服务, 以保证服务的正常运行.

使用

Gentoo

emerge 安装 sys-process/daemontools 后, 它自动在 /分区 下新建一个 /service 目录.

svscan 服务会对这个目录下的子目录作检测, 如果子目录里有 run sh脚本, 则会使用 supervise 启动它.

注意 run 脚本要加上 可执行 权限.

所以只需要把要管理的服务在 /service 下, 把 svscan 加入到启动项, 就可以了.

参考: Service creation

daemontools 还有一些工具, 如 svc, svstat

svc 用于控制单个服务的 up, down, pause, continue, hangup 等:

svc -h /service/yourdaemon: sends HUP 
svc -t /service/yourdaemon: sends TERM, and automatically restarts the daemon after it dies 
svc -d /service/yourdaemon: sends TERM, and leaves the service down 
svc -u /service/yourdaemon: brings the service back up 
svc -o /service/yourdaemon: runs the service once

svstat 用于查看某个服务的状态, 比如:

» sudo svstat /service/test
/service/test: up (pid 1541) 1 seconds

Ubuntu

安装了 daemontools, 发现并没有自动新建 /service 目录, 也没有启动脚本...

ubuntu 有个 daemontools-run 程序, 我原先是把服务放在自己新建的 /service 下的, 安装后, 它会建立 /etc/service 这个目录, 并把 /service 的内容 mv 过去, 然后 ln -s 建一个软连接到 /service, 如果开始没有新建 /service 目录, 则不会做软连接.

装好 daemontools-run 后, 还会创建启动脚本 /etc/init/svscan.conf.

可参考:

网上找了两个启动脚本:

参考链接