当前位置: 首页 > news >正文

Supervisor进程管理

Supervisor 是一个用 Python 写的进程管理工具,用于管理非守护(non-daemon)进程。它可以用来启动、停止、重启、监控进程,并在进程意外崩溃时自动重启。

场景用途

Supervisor 常用于:

1、后台运行的脚本或服务,如:Celery worker / beat、Gunicorn/Django/Flask 等 Web 服务、队列消费脚本

2、需要自动重启的服务

3、开机启动任务

安装 Supervisor

sudo apt update
sudo apt install supervisor

安装完成后,Supervisor 会自动创建并启动 supervisord 服务。

文件结构与位置

类型位置
主配置文件/etc/supervisor/supervisord.conf
子配置文件目录/etc/supervisor/conf.d/
日志文件默认位置/var/log/supervisor/

一般我们只需要在 conf.d 里添加服务配置文件即可。

Supervisor 配置文件结构示例

#实战
[program:xxx_assignment]
command=/home/ubuntu/venv/xxenv/bin/python /home/ubuntu/web/your_project/SysManage/funcations/xxx_assignment.py
autostart=true
autorestart=true
stdout_logfile=/home/ubuntu/web/logs/xxx_assignment/xxx_assignment.out.log
stdout_logfile_maxbytes=100MB
stderr_logfile=/home/ubuntu/web/logs/xxx_assignment/xxx_assignment.err.log
stderr_logfile_maxbytes=100MB
#样例
[program:myworker]
command=python3 /home/ubuntu/my_script.py
directory=/home/ubuntu
autostart=true
autorestart=true
startsecs=5
stopwaitsecs=600
stdout_logfile=/var/log/myworker.log
stderr_logfile=/var/log/myworker.err
user=ubuntu

配置字段详解:

参数说明
program:<name>程序名称,用于 supervisorctl 命令
command要执行的命令(完整路径)
directory工作目录(命令执行时的位置)
autostartSupervisor 启动时自动运行此程序
autorestart程序异常退出后自动重启
startsecs启动后持续运行多少秒算启动成功
stopwaitsecs等待进程关闭的最大秒数
stdout_logfile / stderr_logfile日志输出位置
user使用哪个用户执行命令
environment环境变量配置,支持虚拟环境或定制路径

常用命令

# 查看所有进程状态
sudo supervisorctl status# 启动/停止/重启某个进程
sudo supervisorctl start <name>
sudo supervisorctl stop <name>
sudo supervisorctl restart <name># 重新读取配置(新增或删除配置文件后执行)
sudo supervisorctl reread# 更新 supervisor 的进程管理列表(激活新配置)
sudo supervisorctl update# 查看所有配置是否有语法问题
sudo supervisorctl avail

注意事项

1、日志文件路径一定要存在,避免无法写入。
2、子配置文件一定要以 .conf 结尾,且放在 /etc/supervisor/conf.d/ 中才会被加载。
3、子配置文件配置好后使用 reread + update 重新读取和激活配置

http://www.lryc.cn/news/572919.html

相关文章:

  • 数据结构-顺序表-求基数乘积
  • 阿里云申请ssl证书,同时需要绑定域名,下载nginx压缩包,nginx添加证书路径即可
  • 云徙科技 OMS:让订单管理变得轻松又高效
  • 联邦学习时间开销优化:现状、挑战与研究进展
  • C#的Dynamic、Object、Var
  • 什么是Vue.js
  • Linux -- 线程、锁
  • 大模型Text2SQL之在CentOS上使用yum安装与使用MySQL
  • LeetCode 680.验证回文串 II
  • 大模型在肺癌预测及个性化诊疗方案中的应用研究
  • 数据结构-顺序表-数值统计
  • 如何自建服务器并开启公网IP:本地内网网址让外网访问详细教学
  • Nginx常见功能
  • 基于YOLO的语义分割实战(以猪的分割为例)
  • “地标界爱马仕”再启:世酒中菜联袂陈汇堂共筑新会陈皮顶奢产业
  • C++11 GC Interface:从入门到精通
  • 如何正确处理音频数据:16位整数与32位浮点数
  • JVM对象内存分配机制全解析
  • CSS Content符号编码大全
  • 「AI高校」| 《清华大学:AI赋能教育高考志愿填报工具使用指南》
  • 榕壹云婚恋相亲系统:ThinkPHP+UniApp打造高效婚配平台
  • c++set和pair的使用
  • joomla 使用nginx服务器只能打开首页,其他页面404的解决方案
  • win7上搭建FTP服务器步骤
  • OSI网络通信模型详解
  • I排序算法.go
  • 互感器铭牌图像识别系统
  • 【系统规划与管理师第二版】1.2 信息技术及其发展
  • 阿里巴巴开源的 分布式事务解决方案Seata
  • A028自动升降机+S71200+HMI+主电路图+外部接线图+流程图+IO分配表