Daemontools使用笔记

Daemontools

介绍

Daemontools是一个watchdog工具,用于监听指定进程并保活。

安装

Daemontools十分小巧,推荐编译安装。

以下摘自官网

生成编译文件夹

1
2
3
mkdir -p /package
chmod 1755 /package
cd /package

下载解压包

1
2
3
4
gunzip daemontools-0.76.tar
tar -xpf daemontools-0.76.tar
rm -f daemontools-0.76.tar
cd admin/daemontools-0.76

编译

1
package/install

可能遇到的问题

另一篇文章

配置

安装完后,daemontools分为两部分:

  • /command/: 存储daemontools的可执行文件,安装时连接到/usr/local/bin下;
  • /service/: 保存Service配置。

Service

每个service以文件夹的形式保存。
每个文件夹下保存可执行文件run,作为执行的程序。
run文件推荐赋值权限755

权限示例

1
2
3
4
5
6
7
8
[root@greenvm-lkf7700v2 ~]# ls -al /service/zookeeper/
total 324
drwxr-xr-x. 3 root root 52 Nov 21 16:41 .
drwxr-xr-x. 7 root root 88 Nov 21 13:50 ..
-rwxr-xr-x. 1 root root 155 Nov 21 16:41 run
drwx------. 2 root root 53 Nov 21 17:26 supervise
-rw-r--r--. 1 root root 326422 Nov 21 17:24 zookeeper.out
[root@greenvm-lkf7700v2 ~]#

run文件示例

1
2
3
4
5
6
#!/bin/bash
ZK_PATH=/opt/zookeeper-3.4.10
source /etc/profile.d/java.sh
source /etc/profile.d/zookeeper.sh
exec 2>&1
exec ${ZK_PATH}/bin/zkServer.sh start

ps: 注意设置环境变量,除了导入脚本或者写死。也可以参考使用 envdir命令)

使用

自启动

centos7下可以调用系统的Systemd服务让svscanboot自行启动。svscanboot将自动调用svscan /service 2>&1 | readproctitle service errors: .....命令,详细说明参见官网

另一篇文章

启动后使用ps aux | grep supervisor命令可观察到监工进程已启动

1
2
3
4
5
6
root      33920  0.0  0.0 112660   940 pts/0    S+   17:40   0:00 grep --color=auto super
root 73503 0.0 0.0 4176 440 ? S 15:10 0:02 supervise zookeeper
root 73504 0.0 0.0 4176 344 ? S 15:10 0:00 supervise storm-nimbus
root 73505 0.0 0.0 4176 344 ? S 15:10 0:00 supervise storm-sup
root 73506 0.0 0.0 4176 348 ? S 15:10 0:00 supervise storm-ui
root 73507 0.0 0.0 4176 344 ? S 15:10 0:00 supervise storm-log

对服务进行操作

使用svc命令对supervisor进行操作,命令如下:

  • -u: 启动服务,若已经启动则重启
  • -d: 关闭服务,不重启 (发送TERM信号)
  • -o: 仅启动
  • -k: 发送KILL信号

完整信息可以参考官方文档