Supervisor守护SS进程-夏天乐园
Supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisor监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。这里以守护shadowsocks进程为例说明一下。

第一,用安装supervisor

supervisor安装完成后会生成三个执行程序:supervisortd、supervisorctl、echo_supervisord_conf,分别是supervisor的守护进程服务(用于接收进程管理命令)、客户端(用于和守护进程通信,发送管理进程的指令)、生成初始配置文件程序。

第二,配置文件

运行supervisord服务的时候,需要指定supervisor配置文件,如果没有显示指定,默认在以下目录查找:

可以通过运行echo_supervisord_conf程序生成supervisor的初始化配置文件,如下所示:

配置文件参数说明:

supervisor的配置参数较多,下面介绍一下常用的参数配置,详细的配置及说明,请参考官方文档介绍。
注:分号(;)开头的配置表示注释

include示例:

(我习惯上把后缀改为.conf)

第三,配置管理进程文件

进程管理配置参数,不建议全都写在supervisord.conf文件中,应该每个进程写一个配置文件放在include指定的目录下包含进supervisord.conf文件中。
1> 创建/etc/supervisor/conf目录,用于存放进程管理的配置文件 (前面已经创建)
2> 修改/etc/supervisor/supervisord.conf中的include参数,将/etc/supervisor/conf目录添加到include中

下面是配置Shadowsockst进程的一个例子:

第四,启动supervisor服务

第五,接下来,便是supervisorctl客户端控制进程

启动、停止、重启,运行supervisorctl命令,不加参数,会进入supervisor客户端的交互终端,并会列出当前所管理的所有进程。
Supervisor守护SS进程-夏天乐园

第六,supervisor加入开机启动

执行

在exit0前添加以下内容

第七,WEB管理页面设置

出于安全考虑,默认配置是没有开启web管理界面,需要修改supervisord.conf配置文件打开http访权限,将下面的配置:

修改成:

port:绑定访问IP和端口,这里是绑定的是本地IP和9001端口
username:登录管理后台的用户名
password:登录管理后台的密码
debug查看连接日志

注:本文参考自 http://blog.csdn.net/xyang81/article/details/51555473