Supervisord 安装、使用说明
Supervisord 是一个 Linux 下的进程管理程序,帮助我们程序自动启动、守护程序运行、监控程序状态、管理程序状态等。
官方文档非常的详细,可以放心食用:http://supervisord.org
安装
安装 Supervisord 非常的简单,他是一个基于 Pthon 2.7 的程序,运行以下命令安装即可。
1 2 |
sudo pip install supervisor |
安装完成后,其实我们可以得到两个程序:
- supervisord – 进程管理主程序
- supervisorctl – 进程管理控制程序
配置文件
这里建议将配置文件放到 /etc/supervisor
文件夹下面,为了方便我们在这个文件夹下扩展其他需要守护进程的配置文件。
我们先建立两个文件夹:
1 2 3 |
sudo mkdir /etc/supervisor sudo mkdir /etc/supervisor/conf.d |
分别存储 supervisord.conf 与我们需要守护进程的 *.conf.
然后,我们将配置文件输出到对应的目录:
1 2 |
sudo echo_supervisord_conf > /etc/supervisor/supervisord.conf |
将其修改其对应内容 [include]
这一节的内容,让 supervisord 自动将 /etc/supervisor/conf.d
目录下的需要守护的配置文件引用进来。
1 2 3 |
[include] files = conf.d/*.conf |
P.S. 如果创建文件失败了,可以先通过 echo_supervisord_conf
获取配置文件内容,然后手动写入到 /etc/supervisor/supervisord.conf
中。
这时候,我们运行使用命令用我们写好的配置运行 supervisord 程序:
1 2 |
sudo supervisord -c /etc/supervisor/supervisord.conf |
如果现实已经在运行了,那么我们就可以 ps -ef | grep supervisord
、sudo kill -9 对应的PID
将其杀掉然后再用上面的命令启动它。
开机自启动
首先,我们更改 supervisord 的启动文件配置,让他启动的时候自动读取我们写好的配置文件。
1 2 |
vi /usr/lib/systemd/system/supervisord.service |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[Unit] Description=Supervisor daemon [Service] Type=forking ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf ExecStop=/usr/bin/supervisorctl shutdown ExecReload=/usr/bin/supervisorctl reload KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target |
然后使用命令让这个服务开机自动启动,这个操作如果成功将会显示一条成功创建链接的提示。
1 2 |
systemctl enable supervisord |
使用这条命令可以检查是否加入开机自启动成功:
1 2 |
systemctl is-enabled supervisord |
守护程序配置文件
1 2 3 4 5 6 7 8 9 |
[program: program_name] user=root command=要执行的命令 stderr_logfile=错误日志路径 stdout_logfile=输出日志路径 directory=程序所在路径 autostart=true autorestart=true |
从上到下分别是程序的名字、运行身份、运行命令、错误日志、输出日志、程序所在路径、自启动、自重启。
编写好保存在 /etc/supervisor/conf.d
文件夹下即可,然后使用 supervisorctl reload
重启程序。
常用命令
1 2 3 4 5 6 7 |
supervisorctl status #查看所有进程的状态 supervisorctl stop #停止 supervisorctl start #启动 supervisorctl restart #重启 supervisorctl update #配置文件修改后可以使用该命令加载新的配置 supervisorctl reload #重新启动配置中的所有程序 |
一些坑
如果使用 supervisorctl reload
命令重启 supervisord 程序,出现了错误:It appears “error: <class 'socket.error'>, [Errno 2] No such file or directory: file: xxxx
,是因为 supervisorctl 程序没有找到和 supervisord 进行交互的 supervisord.sock 文件:
- 可能是
[supervisorctl]
下serverurl
与[unix_http_server]
下的file
字段配置的不一致导致的 - 也有可能是系统中存在多份
supervisord.conf
,supervisorctl 找到了错误的一份进行读取。一般来说,我们只需要删除/etc/supervisord.conf
这份不需要的默认配置文件即可。

原文链接:Supervisord 安装、使用说明
WNJXYKの博客 版权所有,转载请注明出处。
还没有任何评论,你来说两句吧!