CentOS7安装daemontools

centos7安装daemontools

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

1.安装

$ yum install gcc
$ 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

1.1安装过程中出错及解决

  • 出错代码
    ./load envdir unix.a byte.a
    /usr/bin/ld: errno: TLS definition in /lib64/libc.so.6 section .tbss mismatches non-TLS reference in envdir.o
    /lib64/libc.so.6: could not read symbols: Bad value
    collect2: ld returned 1 exit status
    make: *** [envdir] Error 1
    
  • 解决
    $ vim src/conf-cc
    # 在gcc 一行末尾增加
    -include /usr/include/errno.h
    # 更改后
    gcc -O2 -Wimplicit -Wunused -Wcomment -Wchar-subscripts -Wuninitialized -Wshadow -Wcast-qual - 
    Wcast-align -Wwrite-strings -include /usr/include/errno.h
    
    然后重试 package/install安装

安装完成之后,会创建 /service/command两个目录

2.启动Daemontools

$ /command/svscanboot &         #&:表示后台运行

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

$ ps -ef | grep svs


2.2查看进程树

$ yum -y install psmisc
$ pstree -a -p 706


2.3.1设置 Daemontools 自启动(on system boot)

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

2.3.2使用systemd

$ vim /etc/systemd/system/daemontools.service  #新建服务文件

daemontools.service代码

[Unit]
Description=daemontools Start supervise
After=getty.target
[Service]
Type=simple
User=root
Group=root
Restart=always
ExecStart=/command/svscanboot /dev/ttyS0
TimeoutSec=0
[Install]
WantedBy=multi-user.target

启动服务:

$ systemctl start daemontools.service

测试它是否正在运行:

$ systemctl status daemontools.service

设为开机启动:

$ systemctl enable daemontools.service

你可能感兴趣的:(CentOS7安装daemontools)