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 四个部分:

  1. supervisord 用于启动 服务端 进程.
  2. supervisorctl 相当于启动一个客户端, 用来管理其下的进程.
  3. Web Server 提供 web 服务, 方便你查看进程状态
  4. 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 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!