Lianer

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

安装Supervisor

# 使用pip安装supervisor
pip install supervisor

# ubuntu系统使用apt安装
apt-get install  supervisor

# 执行这个命令输出默认的supervisord配置文件
echo_supervisord_conf

# 保存到/etc/supervisord.conf
echo_supervisord_conf > /etc/supervisord.conf

# 编辑配置文件
vi /etc/supervisord.conf

追加如下内容

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

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

supervisord -c /home/supervisord/supervisord.conf

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

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

常用命令

# 进入supervisorctl运行时,必须在supervisord启动之后才行,也必须配置-c参数
supervisorctl -c /home/supervisord/supervisord.conf

# 查看所有action
help

# 控制所有进程
start all
stop all
restart all

# 控制目标进程
stop shadowsocks
start shadowsocks
restart shadowsocks

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

常见问题

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

参考资料