Supervisor是一个进程控制程序。用于监控管理你需要的程序。

当你有一个程序,需要长期在后台运行,并且希望能够在这个程序崩溃之后自动重新启动的时候,你就需要Supervisor了。

安装

1
sudo apt-get install supervisor

配置

Supervisor的配置文件在/etc/supervisor/supervisor.conf。但是通常我们并不需要修改Supervisor的配置文件。我们需要增加我们需要监管的程序。

/etc/supervisor/conf.d下创建我们自己的配置。例如前面博文里面提到的shadowsocks,创建/etc/supervisor/conf.d/shadowsocks.conf配置文件,使用最简单的格式如下:

1
2
3
4
[program:shadowsocks]
command=ssserver -c /etc/shadowsocks.json
autorestart=true
user=nobody

第一行表示程序的名字,第二行command表示运行某程序的命令,第三行表示自动重启,第四行的user表示以什么身份运行该程序。

当然还有很多有用的参数,如autostart表示该程序是否随着supervisor的启动而启动。详情可见官方文档

运行

Supervisor在运行时有两个进程,supervisordsupervisorctl。其中前者是后台的守护进程,也是主进程。后者是用来让管理人员和守护进程交互的程序。

supervisord的启动停止可以使用以下管理:

1
2
3
sudo service supervisor start
sudo service supervisor restart
sudo service supervisor stop

使用这种方式运行,supervisor会默认读取/etc/supervisor下面的配置文件。

管理

1
supervisorctl status

查看当前所有程序的运行状态。status后面可以加上具体某个程序的名字来看其状态。

1
supervisorctl start xxx

启动xxx程序。如果xxx是all的话,表明启动所有程序。

1
supervisorctl restart xxx

以上同理

1
supervisorctl stop xxx

以上同理

1
supervisorctl reload

重新加载配置。原来正在运行的程序会全部重启。

1
supervisorctl update

加载新的配置,原来正在运行的程序不会重启。

1
supervisorctl tail -f shadowsocks stderr

查看标准错误输出。