使用Supervisor管理linux程序

3 minute read

supervisor 是一个 Linux 上用来管理程序后台任务的工具,支持程序的自启动,挂掉重启,日志等功能。可配置程序随系统启动,并支持挂掉重启,增强程序稳定性。

安装 Supervisor

 1# 使用pip安装supervisor
 2pip install supervisor
 3
 4# ubuntu系统使用apt安装
 5apt-get install  supervisor
 6
 7# 执行这个命令输出默认的supervisord配置文件
 8echo_supervisord_conf
 9
10# 保存到/etc/supervisord.conf
11echo_supervisord_conf > /etc/supervisord.conf
12
13# 编辑配置文件
14vi /etc/supervisord.conf

追加如下内容

1[program:theprogramname]  # 任务名称
2command=/bin/cat  # 命令
3user=root
4autostart=true  # 自动启动
5autorestart=true  # 挂掉重启
6stderr_logfile=/var/log/err.log
7stdout_logfile=/home/log/out.log

配置完成,就可以启动 supervisord 了,必须带-c 参数,这里我放到 home 目录下了。

1supervisord -c /home/supervisord/supervisord.conf

如果想要 supervisord 开机自启动,把该命令添加到启动文件

1# 编辑启动文件
2vi /etc/rc.local
3# 在新行添加要执行的命令
4supervisord -c /home/supervisord/supervisord.conf

常用命令

 1# 进入supervisorctl运行时,必须在supervisord启动之后才行,也必须配置-c参数
 2supervisorctl -c /home/supervisord/supervisord.conf
 3
 4# 查看所有action
 5help
 6
 7# 控制所有进程
 8start all
 9stop all
10restart all
11
12# 控制目标进程
13stop shadowsocks
14start shadowsocks
15restart shadowsocks

如果你的配置文件移动到了其他目录,那么无论是使用 supervisord 还是 supervisorctl 命令,都一定要配置-c参数来指定 config 文件路径,否则会报错

常见问题

  • supervisorctl -c xxxx 启动时报错unix:///tmp/supervisor.sock no such file,那是因为没有启动 supervisord 服务,先执行supervisord -c xxxx 即可,supervisorctl 的作用是控制 supervisord,而文件supervisor.sock是通过 supervisord 生成的。

参考资料