Linux 进程守护神:Supervisor 从入门到精通

892 字
4 分钟
Linux 进程守护神:Supervisor 从入门到精通

在 Linux 环境中,我们经常会遇到这样的场景:

  • 一个后端服务运行一段时间后异常退出

  • Python / Node / Java 程序需要在后台长期运行

  • SSH 断开后,进程就跟着没了

  • 希望进程崩溃后自动重启

这时,你就需要一个进程守护(Process Supervisor)工具,而 Supervisor 正是最经典、最稳定的解决方案之一。


一、Supervisor 是什么?#

Supervisor 是一个用 Python 编写的 Linux 进程管理与守护工具,主要用于:

  • 启动、停止、重启进程

  • 监控进程运行状态

  • 进程异常退出后自动拉起

  • 统一管理多个后台服务

Supervisor 本身不是服务框架,而是服务的“看门狗”


二、为什么要用 Supervisor?#

相比于直接 nohup、 & 或 screen / tmux,Supervisor 的优势非常明显:

方式是否自动重启是否开机启动是否统一管理
nohup
screen / tmux
systemd偏系统级
Supervisor非常适合应用级

适合场景:

  • 多个自写服务(爬虫、API、Bot)

  • Python / Node / Go / Java 应用

  • Docker 容器内部进程管理


三、Supervisor 的核心组成#

Supervisor 主要由三部分组成:

  1. supervisord后台运行的守护进程,负责真正管理子进程

  2. supervisorctl命令行管理工具,用于控制进程

  3. 配置文件定义要守护的程序及其行为规则


四、Supervisor 安装#

使用系统包管理器(推荐)#

Ubuntu / Debian:

sudo apt update
sudo apt install supervisor

CentOS / Rocky / AlmaLinux:

sudo dnf install supervisor

安装完成后:

supervisord --version

使用 pip 安装(虚拟环境 / 容器中常用)#

pip install supervisor

然后手动启动:

supervisord

五、Supervisor 配置文件结构#

主配置文件通常在:

/etc/supervisor/supervisord.conf

常见子配置目录:

/etc/supervisor/conf.d/

**推荐做法:**一个服务一个 .conf 文件


六、最基础的进程守护示例#

以一个 Python 脚本为例:

示例程序#

/home/app/test.py
import time
while True:
print("running...")
time.sleep(5)

编写 Supervisor 配置#

新建文件:

/etc/supervisor/conf.d/test.conf

内容如下:

[program:test_app]
command=python3 /home/app/test.py
directory=/home/app
autostart=true
autorestart=true
startsecs=3
stderr_logfile=/var/log/test_app.err.log
stdout_logfile=/var/log/test_app.out.log

重新加载配置并启动#

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start test_app

七、常用配置项说明(重点)#

配置项作用
command启动命令
autostartSupervisor 启动时是否自动启动
autorestart进程异常退出是否自动重启
startsecs启动后多少秒算成功
directory程序工作目录
user以哪个用户运行
stdout_logfile标准输出日志
stderr_logfile错误日志

八、supervisorctl 常用命令#

supervisorctl status # 查看所有进程状态
supervisorctl start xxx # 启动进程
supervisorctl stop xxx # 停止进程
supervisorctl restart xxx # 重启进程
supervisorctl reload # 重载全部配置

九、在 Docker 中使用 Supervisor#

Supervisor 非常适合 容器内管理多个进程

Dockerfile 示例:

RUN apt install -y supervisor
COPY supervisord.conf /etc/supervisor/supervisord.conf
CMD ["supervisord", "-n"]

注意:

  • -n 表示前台运行(Docker 必须)

  • 不要再额外 service start


十、Supervisor vs systemd#

对比项Supervisorsystemd
使用难度
配置复杂度简单偏复杂
适用范围应用级系统级
Docker 友好度

结论

  • 服务器应用管理 → Supervisor

  • 系统服务 / 守护进程 → systemd


十一、常见坑与注意事项#

1. 程序启动立刻退出#

  • 检查 command 是否正确

  • 手动运行一次命令

2. 日志文件无权限#

sudo chown -R appuser /var/log/

3. 修改配置不生效#

一定要执行:

supervisorctl reread
supervisorctl update

结语#

Supervisor 是一个简单、稳定、低心智负担的 Linux 进程守护方案,

非常适合:

  • 个人服务器

  • 自托管服务

  • Docker 容器

  • 小型后端项目

如果你已经用腻了 nohup,那 Supervisor 基本就是必学工具

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Linux 进程守护神:Supervisor 从入门到精通
https://www.kshare.top/posts/linux-进程守护神supervisor-从入门到精通/
作者
Kshare
发布于
2026-02-07
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
Kshare
Hello, I'm Kshare.
公告
欢迎来到Kshare站点!近期站点进行升级,欢迎访问和收藏站点!
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
137
分类
12
标签
59
总字数
333,011
运行时长
0
最后活动
0 天前

文章目录