Linux如何使用supervisor管理进程_Linux supervisor管理进程解析

千雪君_8499

千雪君_8499

2026-04-05

800人浏览

原创

supervisord 启动后 supervisorctl 连不上,主因是未启用 inet_http_server 或 unix socket 权限错误;需检查配置中 [inet_http_server] 或 [unix_http_server] 设置,并确保 supervisorctl 的 serverurl 匹配。

linux如何使用supervisor管理进程_linux supervisor管理进程解析

supervisor 不是 systemd 的替代品,它只做进程守护,不处理系统级依赖或开机启动顺序;用错场景反而会让服务更难排查。

为什么 supervisord 启动后 supervisorctl 连不上?

最常见原因是配置里没开 inet_http_server 或 Unix socket 权限不对。默认配置通常禁用 HTTP 接口,而 supervisorctl 默认走 TCP(http://localhost:9001)。

  • 检查 /etc/supervisor/conf.d/*.conf 里是否包含 [inet_http_server] 段,且 port 和 username/password 已设置
  • 若改用 Unix socket(更安全),需在 [unix_http_server] 中确认 file 路径(如 /var/run/supervisor.sock),并确保 supervisorctl 配置里的 serverurl 指向 unix:///var/run/supervisor.sock
  • 运行 supervisord -c /etc/supervisor/conf.d/supervisord.conf 手动启动时加 -n 参数可前台输出日志,快速定位 bind 失败或权限拒绝问题

supervisorctl start xxx 报错 “ERROR (no such process)” 怎么办?

不是进程名写错了,就是配置没加载。supervisor 不会自动扫描新增的 conf 文件,必须显式重载。

  • 确认你的程序配置文件放在 /etc/supervisor/conf.d/ 下,且后缀为 .conf(比如 myapp.conf)
  • 执行 supervisorctl reread 让 supervisor 发现新配置,再执行 supervisorctl add myapp(如果未自动添加)
  • 注意:仅 reread 不会重启已有进程;要应用变更(比如改了 command),得再执行 supervisorctl update
  • 用 supervisorctl status 查看当前已知进程列表,名字取自配置中 [program:xxx] 的 xxx,不是二进制名或脚本名

Python Web 服务(如 Flask/uWSGI)用 supervisor 启动失败的典型原因

根本问题是工作目录、环境变量和用户权限没对齐,不是“supervisor 不支持 Python”。

  • directory 必须设成项目根目录(含 venv 或 requirements.txt 的路径),否则 import 报错
  • environment 要显式传入 PYTHONPATH、PATH(尤其当用虚拟环境时:PATH="/opt/myapp/venv/bin:%(ENV_PATH)s")
  • 避免用 user=root 启动 Web 服务;换用专用用户(如 www-data)后,要同步检查日志路径、socket 文件路径的写权限
  • uWSGI 常因 --master 和 supervisor 的进程管理冲突而反复重启,建议关掉 uWSGI master(加 --disable-logging --master=false),让 supervisor 全权负责启停

supervisor 的 reload 机制不触发进程 graceful shutdown,SIGTERM 后等待时间由 stopwaitsecs 控制,默认 10 秒——如果你的服务需要 30 秒清理连接,这个值必须手动调大,否则会被强制 kill。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
flask框架如何搭建
flask框架如何搭建

搭建步骤:1、安装Python和Pip;2、创建虚拟环境;3、安装Flask;4、创建Flask应用;5、运行应用;6、访问应用。想了解更多flask框架的相关内容,可以阅读本专题下面的文章。

2024.06.27

3335

8

Python Flask框架
Python Flask框架

本专题专注于 Python 轻量级 Web 框架 Flask 的学习与实战,内容涵盖路由与视图、模板渲染、表单处理、数据库集成、用户认证以及RESTful API 开发。通过博客系统、任务管理工具与微服务接口等项目实战,帮助学员掌握 Flask 在快速构建小型到中型 Web 应用中的核心技能。

2025.08.25

5064

10

Python Flask Web框架与API开发
Python Flask Web框架与API开发

本专题系统介绍 Python Flask Web框架的基础与进阶应用,包括Flask路由、请求与响应、模板渲染、表单处理、安全性加固、数据库集成(SQLAlchemy)、以及使用Flask构建 RESTful API 服务。通过多个实战项目,帮助学习者掌握使用 Flask 开发高效、可扩展的 Web 应用与 API。

2025.12.15

296

16

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

949

5

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.25

2680

5

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

2023.10.19

3108

3

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

2025.10.17

4629

12

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2025.12.29

3729

9

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

2026.01.19

426

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习