Linux进程管理工具Supervisor详细指南

目录

1. 核心功能

1.1 进程守护

1.2 集中化管理

1.3 日志聚合

2. 技术架构

3. 关键限制与前提

4. 部署方式

5. 配置文件

5.1 主进程配置 [supervisord]

5.2 通信接口配置

5.3 客户端工具配置 [supervisorctl]

 5.4 子进程管理配置 [program:x]

5.5 其他配置项

6. Supervisorctl 命令解析

6.1 核心命令行选项

6.1.1 配置与连接参数

6.1.2 操作模式控制

6.1.3 全局选项

6.2 常用操作命令(Actions)

6.2.1 进程管理

6.2.2 配置与重载

6.2.3 日志操作

6.2.4 其他功能

6.3 使用模式示例


Supervisor 是一个专为类 Unix 系统设计的进程管理工具,采用 Client/Server 架构(服务端 supervisord / 客户端 supervisorctl),核心功能是监控、控制和管理多个后台进程。其主要特点和机制如下:

1. 核心功能

1.1 进程守护

自动启动配置的子进程,并在进程异常退出时执行重启操作,保障服务持续运行。

1.2 集中化管理

通过统一的服务端管理多个进程,支持命令行客户端 (supervisorctl) 或可选 Web UI 进行状态查看和操作(启动、停止、重启)。

1.3 日志聚合

捕获子进程的标准输出 (stdout) 和错误输出 (stderr),支持日志文件轮转与容量限制(如 stdout_logfile_maxbytes=1MB)。

2. 技术架构

  • 服务端(supervisord):作为守护进程,负责加载配置、启动子进程、响应客户端指令并处理进程生命周期事件。
  • 客户端(supervisorctl):提供类 Shell 的交互界面或命令参数,动态管理进程状态(如 supervisorctl restart all)。
  • 配置文件
    默认主配置为 /etc/supervisord.conf (INI 格式),子进程配置通常存放于 /etc/supervisor/conf.d/ 目录,支持模块化部署。

3. 约束条件

  • 进程类型约束:仅能管理由 supervisord 直接启动的前台进程,无法接管已存在或后台运行的程序(如 nohup 启动的进程)。
  • 平台兼容性:适用于 Linux/Unix 环境,不支持 Windows
  • 依赖要求:需 Python 2.4 及以上环境,当前主流版本已兼容 Python 3。

4. 部署方式

        CentOS/RHEL为例

# 安装 EPEL 仓库(如未安装)
sudo yum install -y epel-release

# 安装 Supervisor
sudo yum install -y supervisor

# 启动服务并设置开机自启
sudo systemctl enable supervisord   --now

5. 配置文件

5.1 主进程配置 [supervisord]

控制Supervisor守护进程的行为:

  • logfile:守护进程的日志路径(如/var/log/supervisord.log
  • pidfile:存储进程ID的文件路径(如/var/run/supervisord.pid
  • loglevel:日志级别(如info/debug
  • user:指定运行守护进程的系统用户(增强安全性)

5.2 通信接口配置

(a) UNIX Socket [unix_http_server]

  • file:Socket文件路径(如/tmp/supervisor.sock),供supervisorctl本地通信使用
  • chmod/chown:设置Socket文件的权限和属主(如chmod=0700chown=nobody:nogroup

(b) TCP接口 [inet_http_server](可选)

  • port:Web管理界面端口(如:9001
  • username/password:访问控制的凭证

5.3 客户端工具配置 [supervisorctl]

定义supervisorctl的默认连接方式:

  • serverurl:连接地址(如unix:///tmp/supervisor.sockhttp://127.0.0.1:9001
  • 若启用认证,需同步配置username/password

 5.4 子进程管理配置 [program:x]

关键:此部分通常不直接写入主配置文件!

  • 官方推荐实践

    • /etc/supervisor/conf.d/或自定义目录(如/etc/supervisor/config.d/)中创建独立配置文件(如myapp.conf
    • 在主配置中通过[include]动态加载:
      [include]
      files = /etc/supervisor/config.d/*.conf  # 支持通配符
  • 子进程参数示例在独立配置文件中):

    [program:tomcat]  
    command=/opt/app/bin/start.sh run              # 启动命令  
    directory=/opt/app                             # 工作目录  
    stdout_logfile=/opt/app/logs/catalina.out      # 标准输出日志  
    autostart=true                                 # 随Supervisor自启  
    autorestart=unexpected                         # 异常退出时自动重启  
    user=app_user                                  # 运行身份  

5.5 其他配置项

  • environment:设置进程环境变量(如KEY="value"
  • numprocs:启动的进程实例数量
  • stopsignal:自定义停止信号(如SIGTERM

6. Supervisorctl 命令解析

6.1 核心命令行选项

6.1.1 配置与连接参数

  • -c / --configuration:指定配置文件路径(默认路径为 /etc/supervisord.conf)。
  • -s / --serverurl:设定 Supervisord 服务器的监听地址(默认 http://localhost:9001)。
  • -u / --username:用于服务器身份验证的用户名。
  • -p / --password:对应身份验证的密码(需与 -u 搭配使用)。

6.1.2 操作模式控制

  • -i / --interactive:执行命令后进入交互式 Shell 环境。
  • -h / --help:显示完整帮助文档。

6.1.3 全局选项

  • -v / --version:输出当前 Supervisorctl 版本信息。

6.2 常用操作命令(Actions)

6.2.1 进程管理

  • supervisorctl start <program>:启动指定进程(如 start nginx)。
  • supervisorctl stop <program>:停止指定进程。
  • supervisorctl restart <program>:重启目标进程。
  • supervisorctl status:查看所有进程状态(支持 status <program> 过滤)。

6.2.2 配置与重载

  • supervisorctl update:重新加载配置文件并应用改动(自动启停受影响的进程)。
  • supervisorctl reload:仅重载配置文件(不触发进程启停)。
  • supervisorctl reread:检查配置文件变更(需配合 update 生效)。

6.2.3 日志操作

  • supervisorctl tail <program> [stdout|stderr]:实时查看进程日志(如 tail nginx stdout)。
  • supervisorctl clear <program>:清空目标进程日志文件。

6.2.4 其他功能

  • supervisorctl avail:列出配置文件中定义的所有程序名称。
  • supervisorctl remove <program>:从进程组中移除指定程序。
  • supervisorctl shutdown:关闭 Supervisord 服务端。

6.3 使用模式示例

  • 命令行模式:直接执行一次性操作,例如:

    supervisorctl -s http://10.0.8.8:9001 -u admin -p Passw0rd restart webapp
  • 交互模式:启动交互式 Shell 后逐条执行操作:

    supervisorctl -c /opt/supervisord.conf
    > status
    > stop worker
    > start cache
    > exit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值