通用技术 linux 守护进程 supervisor 部署实践

李育春 for 君海游戏QA · 2017年12月28日 · 1804 次阅读

Supervisor(http://supervisord.orgPython 开发的一个 client/server 服务,是 Linux/Unix 系统下的一个进程管理工具,不支持 Windows 系统。) 是用
它可以很方便的监听、启动、停止、重启一个或多个进程。用 Supervisor 管理的进程,当一个进程意外被杀死,supervisort 监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写 shell 脚本来控制。

1.安装
yum install python-setuptools
pip install supervisor
检查 supervisor 是否安装成功。
python
import supervisor

2.生成配置文件
echo_supervisord_conf > /etc/supervisord.conf
3.修改配置文件,本人喜欢每个进程编写一个配置文件的方法。
vi /etc/supervisord.conf
拉到文件最下方
[include]
files = /root/view/supervisor/*.ini
注意:文件里的分号表示注释,[include] 前面的分号必须去掉

4.进程例子
[program:gamefenxi]
command=python /root/view/gamefenxi.py
stdout_logfile=/root/view/gamefenxi.txt
autostart=true
autorestart=true
startsecs=5
priority=1
stopasgroup=true
killasgroup=true
5.配置 supervisor 启动文件,随系统启动。
vi /etc/rc.d/init.d/supervisord
写入
#!/bin/bash

. /etc/rc.d/init.d/functions
RETVAL=0
start() {
        echo -n $"Starting supervisord: "
        daemon supervisord
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/supervisord
}
stop() {
        echo -n $"Stopping supervisord: "
        killproc supervisord
        echo
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/supervisord
}

restart() {
        stop
        start
}
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart|force-reload|reload)
        restart
        ;;
  condrestart)
        [ -f /var/lock/subsys/supervisord ] && restart
        ;;
  status)
        status supervisord
        RETVAL=$?
        ;;
  *)
        echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}"
        exit 1
esac
exit $RETVAL
给文件赋权限
chmod 755 /etc/rc.d/init.d/supervisord
6.启动 supervisor
service supervisord start
守护结果示例,手工 kill agent 进程,supervisord 自动拉起进程
2017-12-28 14:52:19,713 INFO exited: agent (terminated by SIGTERM; not expected)
2017-12-28 14:52:19,718 INFO spawned: 'agent' with pid 42816
2017-12-28 14:52:24,724 INFO success: agent entered RUNNING state, process has stayed up for > than 5 seconds (startsecs)
7.supervisor 命令 supervisorctl

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册