Supervisor
Supervisor[笔记]
supervisord -h 查看 supervisord 命令帮助
supervisorctl -h 查看 supervisorctl 命令帮助
supervisorctl help 查看 supervisorctl 的 Action 命令
supervisorctl help 任意一个Action 查看这个 Action 的使用
1. 简介
Supervisor 是一个进程控制系统. 通俗点说, 它可以监控你的进程, 进程异常退出, 它可以自动帮你重启进程.所以我们可以使用它来监控队列消费进程 等等
2. 安装
2.1 使用 包管理器 安装(安装的不是最新版本)
# Ubuntu
sudo apt install supervisor
# Centos
sudo yum install supervisor
2.2 使用 pip 安装
pip install supervisor
3. 创建配置文件
Supervisor 安装以后, 运行 echo_supervisord_conf
命令, 会在终端输出默认配置. 看到配置内容后, 运行 echo_supervisord_conf > /etc/supervisord.conf
将输出默认配置输出到 /etc/supervisord.conf
文件中. 配置文件就创建好了.
4. 启动 Supervisor
直接在终端运行 supervisord
就会将 supervisor 启动. 这个命令默认用的是 /etc/supervisord.conf
这个配置文件. 如果你想使用自定义的配置文件启动 Supervisor , 运行 supervisord -c 配置文件
.
5. 使用 Supervisor
Supervisor 有 supervisord
, supervisorctl
, Web Server
, XML-RPC Interface
四个部分:
supervisord
用于启动 服务端 进程.supervisorctl
相当于启动一个客户端, 用来管理其下的进程.Web Server
提供 web 服务, 方便你查看进程状态XML-RPC Interface
(没用过)
6. 常用命令
有两种使用方式, 你可以直接在终端输入
supervisorctl
启动客户端, 然后输入status
update
之类的命令来管理进程. 或者 直接输入supervisorctl status
supervisorctl update
.
- status: 查看程序状态
- stop: 关闭程序
- start: 启动程序
- restart: 重启程序
- reread: 读取有更新的配置文件,不会重启进程
- update: 重启配置文件修改过的程序
- tail: 查看进程日志
7. 进程配置文件
; 冒号后为进程前缀
[program:laravel-worker]
; 进程名称
process_name=%(program_name)s_%(process_num)02d
; 进程运行的命令
command=php /home/forge/app.com/artisan queue:work sqs --sleep=3 --tries=3
; 如果是 true, 当 supervisor 启动时, 程序将会自动启动
autostart=true
; 检测到程序退出时是否自动重启
autorestart=true
; 运行进程的用户
user=forge
; 进程数量
numprocs=8
; 重定向错误流到标准输出,等价于 2>&1
redirect_stderr=true
; 标准日志输出文件
stdout_logfile=/home/forge/app.com/worker.log
默认配置的最后有这么一段:
[include]
files = supervisord.d/*.ini
意思是 supervisor 会读取 supervisord.d 下的 .ini
文件, 所以把你的配置文件按要求命名保存就可以了.
8. 命令详解
8.1 清理日志
clear <name> Clear a process' log files.
clear <name> <name> Clear multiple process' log files
clear all Clear all process' log files
8.2 重启进程
restart <name> Restart a process
restart <gname>:* Restart all processes in a group
restart <name> <name> Restart multiple processes or groups
restart all Restart all processes
Note: restart does not reread config files. For that, see reread and update.(重启不会重新读取配置文件)
8.3 启动进程
start <name> Start a process
start <gname>:* Start all processes in a group
start <name> <name> Start multiple processes or groups
start all Start all processes
8.4 停止进程
stop <name> Stop a process
stop <gname>:* Stop all processes in a group
stop <name> <name> Stop multiple processes or groups
stop all Stop all processes
8.5 update: 重新加载配置, 根据需要增加或移除进程
update Reload config and add/remove as necessary
update all Reload config and add/remove as necessary
update <gname> [...] Update specific groups
8.6 展示所有管理的进程
avail Display all configured processes
8.7 reload: 重启 supervisord(修改 supervisord.conf 需要执行的操作)
reload Restart the remote supervisord
8.8 reread: 读取有更新的配置文件,不会重启进程
reread Reload the daemon's configuration files
8.9 结束 supervisord 进程
shutdown Shut the remote supervisord down
8.10 查看进程状态
status <name> Get status for a single process
status <gname>:* Get status for all processes in a group
status <name> <name> Get status for multiple named processes
status Get all process status info
9. 优秀链接
本作品采用《CC 协议》,转载必须注明作者和本文链接