安装:
- # yum install python-setuptools
- # easy_install supervisor
如果已经安装了epel和python-pip, 也可以简单
pip install supervisor
如果出现关于缺少 meld3 之类的,安装
git clone https://github.com/Supervisor/meld3cd meld3python setup.py install
配置:
1、生成模板 echo_supervisord_conf > /etc/supervisord.conf
2、在生成的 supervisord.conf 文件末尾增加
- [program:<任意取名>]
- command=<命令行> ;需要执行的命令)
- user =root ;(default is current user , required if root)
- autostart=true ;start at supervisord start (default: true)
- autorestart=true ;whether/when to restart (default: unexpected)
- startsecs=3 ;number of secs prog must stay running ( def . 1)
- stderr_logfile=/tmp/ss_err.log ;redirect proc stderr to stdout (default false) 错误输出重定向
- stdout_logfile=/tmp/ss.log ;stdout log path, NONE for none; default AUTO, log输出
- (更多配置说明请参考:http://supervisord.org/configuration.html)
例如:
[program:ss]command = python /home/wwwroot/shadowsocks-rm/shadowsocks/servers.pyuser = rootautostart = trueautorestart = true
supervisor 命令行:
1、supervisord -c /etc/supervisord.conf //启动supervisor, 用指定的配置文件
2、supervisorctl //进入supervisorctl 控制台,支持命令包括:
add clear fg open quit remove restart start stop update avail exit maintail pid reload reread shutdown status tail version
可以直接带后面输入,例如 : supervisorctl status //查看状态。
修改了 /etc/supervisord.conf ,需要执行 supervisorctl reload 来重新加载配置文件
如果想管理ss进程,应该用supervisorctl {start|stop|restart} ss
查看ss在后台的状态:ps -ef | grep servers.py
supervisor 做成自启动服务:
CentOS 7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,像需要开机不登陆就能运行的程序,存系统服务里即:/usr/lib/systemd/system目录下。每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]和[Install],[Unit]部分主要是对这个服务的说明,内容包括Description和After,Description用于描述服务,After用于描述服务类别 [Service]部分是服务的关键,是服务的一些具体运行参数的设置,这里Type=forking是后台运行的形式,PIDFile为存放PID的文件路径,ExecStart为服务的具体运行命令,ExecReload为重启命令,ExecStop为停止命令,PrivateTmp=True表示给服务分配独立的临时空间,注意:[Service]部分的启动、重启、停止命令全部要求使用绝对路径,使用相对路径则会报错![Install]部分是服务安装的相关设置,可设置为多用户的
该例子中 supervisord 已经作为服务脚本安装与system 目录下,所以只需要调用 centos 的 systemctl 命令置为开机启动
systemctl enable supervisord