歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> 學習Linux >> CentOS 7 安裝 daemontools

CentOS 7 安裝 daemontools

日期:2017/3/3 17:45:47   编辑:學習Linux

CentOS 7 安裝 daemontools

CentOS 7 安裝 daemontools


Daemontools是管理Unix服務的工具,它提供一組工具來管理一系列用戶進程,當進程由於某些原因down掉之後,daemontools會自動重啟進程

注意

被管理的進程不能以daemon形式運行,例如nginx.conf 必須關閉daemon, daemon off;
不要在/service/建任何目錄, /service/只存放一些symbol link
只需要完成安裝 / 配置兩步即可
安裝

$ mkdir  ~/tools$ cd /tools$ wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz$ tar xvzf daemontools-0.76.tar.gz$ cd admin/daemontools-0.76$ package/install

如果安裝出現錯誤

/usr/bin/ld: errno: TLS defini  tion in /lib/libc.so.6 section .tbss mismatches non-TLS reference in envdir.o將admin/daemontools-0.76/src/error.h中的extern int errno;替換為#include <errno.h>

安裝完成之後,會創建 /service /command兩個目錄

啟動daemontools

daemontools是一組service管理工具,其中svscanboot工具用來啟動svscan工具。可以通過以下命令啟動svscanboot

# /command/svscanboot &

也可以設置開機啟動,具體參考

啟動之後,查看進程,可以發現svscan做為svscanboot的子進程在運行

# ps -ef|grep svs  root      9134  9072  0 04:05 pts/2    00:00:00 /bin/sh /command/svscanbootroot      9136  9134  0 04:05 pts/2    00:00:00 svscan /service

配置

啟動svscanboot之後,相應的svscan進程也啟動起來,其中參數/service/ 就是管理配置文件的目錄

創建services目錄,例如

# mkdir -p /opt/svc/{nginx, tornado}

在services目錄創建run腳本(名字必須是run而且權限是755),例如nginx目錄

#touch /opt/svc/nginx/run  && chmod 755 /opt/svc/nginx/run#cat /opt/svc/nginx/run#!/bin/shexec /home/vagrant/nginx/sbin/nginx   #啟動進程命令

創建symbol link, 創建完後daemontools會自動啟動nginx進程

#ln -s /opt/svc/nginx/  /service/ #ln -s /opt/svc/tornado/  /service/ # pstree -a  -p 9134svscanboot,9134 /command/svscanboot  |-readproctitle,9137 service errors:...  `-svscan,913      6 /service      |-supervise,9138 nginx      |   `-nginx,913       9      |       `-nginx,9140               `-supervise,9164      tornado          `-python,9165 /home/vagrant/tornado/main.py

從中可以看出來,svscanboot負責啟動svscan服務,svscan管理supervise進程。而具體的客戶進程,是通過supervise進程來統一管理的

現在nginx和tornado都被daemontool管理起來了,試試看殺掉tornado應用進程看看

root@precise32:/service# kill 9165root@precise32:/service# !psps -ef|grep torroot          9164  9136  0 04:06 pts/2    00:00:00 supervise tornadoroot          9181  9164  2 04:09 pts/2    00:00:00 python /home/vagrant/tornado/main.py

可以看到,雖然手動kill掉了tornado應用,但是daemontool自動將應用重新啟動起來了

常用命令

啟動被管理的進程 (配置完後無需執行svc命令)

svc -u /service/nginx/  (啟動之後,如果nginx掛掉,daemontools會自動重啟nginx)

關閉被管理的進程(不會關閉daemontools supervise進程)

svc -d /service/nginx/

查看service狀態

svstat /service/nginx/

移除service

rm  /service/nginx   #移除軟連接  svc -dx /opt/svc/nginx/

多嘴

問:咦,如果daemontools的進程掛掉了,該怎麼辦??
答:自個兒看文檔,然後手動殺掉 svscanboot / svscan / supervisor 進程看看?

以上內容來自http://linbo.github.io/2013/02/24/daemontools

在CentOS 7上還需要進行些許改動,方法如下:

Cut’n’paste fromhttp://www.productionmonkeys.net/guides/qmail-server/daemontools

CentOS 7 uses systemd

Create a new file /etc/systemd/system/daemontools.service, with the startup code in it:
新建一個文件 /etc/systemd/system/daemontools.service, 內容如下:

[Unit]Description=daemontools Start superviseAfter=getty.target[Service]Type=simpleUser=rootGroup=rootRestart=alwaysExecStart=/command/svscanboot /dev/ttyS0TimeoutSec=0[Install]WantedBy=multi-user.target

Start the service,起動服務:

systemctl start daemontools.service

Test that it is running,測試是否運行:

systemctl status daemontools.service

Enable it to start at boot,設為開機啟動:

systemctl enable daemontools.service

http://xxxxxx/Linuxjc/1184808.html TechArticle

Copyright © Linux教程網 All Rights Reserved