安装
pip install supervisor
配置
创建配置文件 /etc/supervisor/supervisor.conf
mkdir /etc/supervisor
touch /etc/supervisor/supervisor.conf
mkdir /etc/supervisor/conf.d
vi /etc/supervisor/supervisor.conf
添加如下配置:
[include]
files=/etc/supervisor/conf.d/*.conf
user=root
[supervisord]
nodaemon=false
# 注意: 这里默认为true,supervisord启动后不会自动到后台
[supervisorctl]
[inet_http_server]
port = 0.0.0.0:9001
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
添加 shadowsockets.conf 文件 vim /etc/supervisor/conf.d/shadowsockets.conf
添加内容:
[program:shadowsockets]
#脚本目录
directory=/usr/bin
# 脚本执行命令
command=ssserver -c /etc/shadowsocks.json
# supervisor启动的时候是否随着同时启动,默认True
autostart=true
#设置子进程挂掉后自动重启的情况,有三个选项,false,unexpected和true。如果为f alse的时候,无论什么情况下,都不会被重新启动,如果为unexpected,只有当进程的 退出码不在下面的exitcodes里面定义的
autorestart=false
#这个选项是子进程启动多少秒之后,此时状态如果是running,则我们认为启动成功了
。默认值为1
#startsecs=1
#日志输出
#stderr_logfile=/tmp/shadowsockets_stderr.log
#stdout_logfile=/tmp/shadowsockets_stdout.log
#脚本运行的用户身份
user = root
#把 stderr 重定向到 stdout,默认 false
#redirect_stderr = true
#stdout 日志文件大小,默认 50MB
#stdout_logfile_maxbytes = 20M
#stdout 日志文件备份数
#stdout_logfile_backups = 20
运行(手动启动)
supervisord -c /etc/supervisor/supervisord.conf
用 supervisorctl 查看已经被监控的program
! 直接用 #supervisorctl 会提示:http://localhost:9001 refused connection)
supervisord -c /etc/supervisor/supervisord.conf
可能会报错
Error: .ini file does not include supervisorctl section
解决办法:
- 先确保supervisord.conf中有[supervisord],[supervisorctl]有这两个基本模块,还有[program:XXX]自己程序的配置(可以在supervisord.conf也可以在/etc/supervisor/*.ini中)
- 最关键的两个命令:chmod +x /usr/bin/supervisord
chmod +x /usr/bin/supervisorctl
chmod +x /etc/supervisord.conf主要是把把相关文件都授权了 - 把supervisord杀掉后再次启动supervisord