ckdk's blog

supervisor使用

2019/01/14

适用场景:任务退出后需要自动重启

安装

centos 建议不要用 yum 安装,因为版本较低
使用 pip 进行安装

1
pip install -U supervisor

使用

有 supervisord 和 supervisorctl 两个命令,分别用于启动 daemon 程序和与之交互

启动 daemon 程序

1
supervisord [-c <config file>]

查看状态

1
supervisorctl [-c <config file>] status

重新加载配置文件

1
2
3
4
5
6
7
# 直接重启
supervisorctl [-c <config file>] reload

# 先查看哪些配置需要重新加载
supervisorctl [-c <config file>] reread
# 更新对应配置
supervisorctl [-c <config file>] update <program1> [<program2> [...]]

配置

初始化

1
echo_supervisord_conf >supervisor.ini

启用 web 页面

1
2
3
4
[inet_http_server]
port=<host>:<port>
username=<basic auth username>
password=<basic auth password>

为了防止多个 supervisor 相互覆盖,建议修改 log, pid, sock 文件地址

1
2
3
4
5
6
7
[unix_http_server]
file=%(ENV_HOME)s/log/supervisor.sock
[supervisord]
logfile=%(ENV_HOME)s/log/supervisord.log
pidfile=%(ENV_HOME)s/log/supervisord.pid
[supervisorctl]
serverurl=unix:///%(ENV_HOME)s/log/supervisor.sock

添加子配置目录,建议使用 ini 后缀,方便 ini 高亮

1
2
[include]
files = /path/to/your/conf/*.ini

一个 ini 文件例子

1
2
3
4
5
6
7
[program:pitaya]
directory = /home/test
command = sh test.sh
autostart = true
autorestart = true
stdout_logfile = %(ENV_HOME)s/log/test.log
redirect_stderr=true

更多 program 的配置查看官方文档
允许设置环境变量、多进程实例、按进程组杀死进程等

CATALOG
  1. 1. 安装
  2. 2. 使用
  3. 3. 配置