supervisor使用详解
参考文章:
Supervisor使用详解
Supervisor 是一个用 Python 编写的客户端/服务器系统,它允许用户在类 UNIX 操作系统(如 Linux)上监控和控制进程。Supervisor 并不是一个分布式调度框架,而是一个进程管理工具,它可以用来启动、停止和重启程序,并且可以自动重启崩溃的程序,确保它们保持运行状态。
以下是 Supervisor 的一些主要特点:
- 进程管理:Supervisor 可以管理多个子进程,确保它们按照配置文件中指定的方式运行。
- 自动重启:如果被监控的进程异常退出,Supervisor 可以根据设定的策略自动重启这些进程。
- 日志管理:它能够收集子进程的标准输出和标准错误流,并将它们写入日志文件中,方便调试和故障排查。
- 远程控制:通过 XML-RPC 接口,你可以从远程机器上与 Supervisor 进行交互,执行命令或获取状态信息。
- Web 界面:提供了一个简单的 Web 界面用于查看所有受管进程的状态以及进行基本的操作,如启动、停止或重启。
- 事件监听:支持事件监听机制,可以对特定事件作出反应,比如进程启动、退出等。
安装和使用
安装 Supervisor 通常可以通过包管理器完成:
# Debian 或 Ubuntu 上可以使用 apt-get
sudo apt-get install supervisor
# Centos
yum install supervisor
安装完成后,你需要编辑配置文件来定义哪些程序应该由 Supervisor 管理。配置文件一般位于 /etc/supervisor/conf.d/ 目录下。每个要管理的程序都有自己的 .conf 文件。
一个典型的配置文件可能看起来像这样:
# 样例:
[program:myapp]
command=/path/to/myapp ; 启动命令
autostart=true ; 在 supervisord 启动时自动启动此程序
autorestart=true ; 当程序退出时自动重启
stderr_logfile=/var/log/myapp.err.log ; 错误日志路径
stdout_logfile=/var/log/myapp.out.log ; 标准输出日志路径
user=root ; 使用哪个用户权限运行程序# 正式配置:
[program:test]
command=/root/miniconda3/envs/abr/bin/python /home/kes/test.py
autostart=true
autorestart=true
stderr_logfile=/home/kes/test.err.log
stdout_logfile=/home/kes/test.out.log
user=root
保存配置文件后,需要更新 Supervisor 的配置并重新加载:
sudo supervisorctl reread
sudo supervisorctl update
之后就可以使用 supervisorctl 命令行工具来管理应用程序了,例如启动、停止或重启服务。Supervisor 是一种非常有用的技术,特别是对于那些需要长时间运行的服务型应用,它可以确保即使是在非预期的情况下也能让这些服务持续可用。
# 设置开机自启
systemctl enable supervisord# 取消开机自启
systemctl disable supervisord# 检查是否开机自启
systemctl is-enabled supervisord# 立即启动 supervisord
systemctl start supervisord# 检查状态
systemctl status supervisord# 停止服务
systemctl stop supervisord# 重新加载服务配置
systemctl reload supervisord#进入子任务配置文件目录
cd /etc/supervisor/conf.d#创建子任务配置文件
touch test.ini#编辑配置文件
vi test.ini重新读取配置文件并应用更改
方式一:
supervisorctl reload:重新读取配置文件
supervisorctl update:更新运行中的程序以反映配置文件中的更改
supervisorctl start test:启动test程序
supervisorctl status test:检查程序的状态以确保它已经成功启动
方式二:
systemctl restart supervisord:停止并再次启动supervisord服务其他命令:
supervisorctl stop test:停止特定服务
supervisorctl stop all:停止所有服务
(base) [root@VM-16-6-centos ~]# systemctl status supervisord
● supervisord.service - Process Monitoring and Control DaemonLoaded: loaded (/usr/lib/systemd/system/supervisord.service; enabled; vendor preset: disabled)Active: active (running) since Sat 2024-12-14 23:06:15 CST; 1h 19min agoProcess: 4696 ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf (code=exited, status=0/SUCCESS)Main PID: 4699 (supervisord)Tasks: 5Memory: 395.1MCGroup: /system.slice/supervisord.service├─ 4699 /usr/bin/python /usr/bin/supervisord -c /etc/supervisord.conf├─24036 /root/miniconda3/envs/abr/bin/python /home/kes/test.py├─24118 /root/miniconda3/envs/abr/bin/python -c from multiprocessing.resource_tracker import ...└─24119 /root/miniconda3/envs/abr/bin/python -c from multiprocessing.spawn import spawn_main;...Dec 14 23:06:15 VM-16-6-centos systemd[1]: Stopped Process Monitoring and Control Daemon.
Dec 14 23:06:15 VM-16-6-centos systemd[1]: Starting Process Monitoring and Control Daemon...
Dec 14 23:06:15 VM-16-6-centos systemd[1]: Started Process Monitoring and Control Daemon.
根据提供的 systemctl status supervisord 输出,可以总结出以下信息:
Supervisord 服务状态
-
Loaded: 表明
supervisord.service的单元文件已经被正确加载,并且它位于/usr/lib/systemd/system/supervisord.service。该服务被设置为开机启动(enabled),但默认情况下供应商预设是禁用的(vendor preset: disabled)。 -
Active (running): 这表示
supervisord服务当前正在运行,自 2024 年 12 月 14 日 23:06:15 CST 开始已经持续运行了大约 1 小时 19 分钟。 -
Process: 显示了启动
supervisord服务的命令以及它的退出状态码(code=exited, status=0/SUCCESS),意味着启动过程成功完成。 -
Main PID: 主进程 ID 是 4699,对应于运行中的
supervisord守护进程。 -
Tasks: 当前由
supervisord管理的任务数量为 5 个。 -
Memory: 服务占用的内存总量为 395.1 MB。
-
CGroup: 列出了属于
supervisord服务控制组的所有子进程。从输出中可以看到:- PID 4699 是主
supervisord进程。 - PID 24036 是您的 Python 脚本
/home/kes/test.py,它正在使用 Miniconda 环境中的 Python 解释器。 - PIDs 24118 和 24119 看起来像是与 Python 的多处理模块相关的辅助进程,用于资源跟踪和进程生成。
- PID 4699 是主
-
日志条目: 最后几行显示了
systemd日志,记录了supervisord服务的停止、启动和再次启动的时间戳。
相关文章:
supervisor使用详解
参考文章: Supervisor使用详解 Supervisor 是一个用 Python 编写的客户端/服务器系统,它允许用户在类 UNIX 操作系统(如 Linux)上监控和控制进程。Supervisor 并不是一个分布式调度框架,而是一个进程管理工具&#x…...
win11电源设置在哪里?控制面板在哪里?如何关闭快速启动?
不知道微软咋想的,从win10(win8)开始搞事情,想把windows娱乐化。 娱乐化的特点就是只照顾傻子不考虑专家,系统设置统统藏起来,开机即用——也只能那么用。 搞两套界面做不到吗? win11非常头疼的…...
【论文阅读笔记】One Diffusion to Generate Them All
One Diffusion to Generate Them All 介绍理解 引言二、相关工作三、方法预备知识训练推理实现细节训练细节 数据集构建实验分结论附录 介绍 Paper:https://arxiv.org/abs/2411.16318 Code:https://github.com/lehduong/onediffusion Authors࿱…...
SpringCloud和Nacos的基础知识和使用
1.什么是SpringCloud 什么是微服务? 假如我们需要搭建一个网上购物系统,那么我们需要哪些功能呢?商品中心、订单中心和客户中心等。 当业务功能较少时,我们可以把这些功能塞到一个SpringBoot项目中来进行管理。但是随…...
人工智能技术的深度解析与推广【人工智能的应用场景】
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默, 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把…...
md5sum -c
md5sum -c xxx 命令用于验证文件的 MD5 校验和是否匹配。具体来说,-c 选项告诉 md5sum 命令去读取指定文件(通常是一个包含 MD5 校验和的文件),并与实际文件的 MD5 校验和进行比较。 工作原理: 生成校验和文件&#x…...
excel使用笔记
1.工作表1计算工作表2某列的和 假设我们有两个工作表,分别命名为“Sheet1”和“Sheet2”,我们想要求和这两个工作表中A1到A**单元格的数据,可以在任意一个工作表的单元格中输入以下公式: SUM(Sheet1!A1:A10, Sheet2!A1:A10) SUM…...
keepalived+nginx实现web高可用
目录 高可用集群搭建 Keepalived+nginx实现web高可用 一.节点规划 二.基础准备 1.修改主机名 2.关闭防火墙和selinux服务 三.用keepalived配置高可用 1.安装nginx服务 2.修改nginx配置文件 3.启动nginx 4.访问nginx 5.安装keepalived服务 6.编辑配置文件…...
边界层气象:脉动量预报方程展开 | 湍流脉动速度方差预报方程 | 平均湍流动能收支方程推导
写成分量形式 原始式子: ∂ u i ′ ∂ t u ‾ j ∂ u i ′ ∂ x j u j ′ ∂ u ‾ i ∂ x j u j ′ ∂ u i ′ ∂ x j − 1 ρ ‾ ⋅ ∂ p ′ ∂ x i g θ v ′ θ ‾ v δ i 3 f ϵ i j 3 u j ′ v ∂ 2 u i ′ ∂ x j 2 ∂ ( u i ′ u j ′ ‾ ) ∂ x j…...
TOSUN同星TsMaster使用入门——2、使用TS发送报文,使用graphics分析数据等
在第一章里面已经介绍了关于同星工程的创建和最基础的总线分析,接下来看看怎么使用TS发送报文以及图形化分析数据。 目录 一、使用Graphics分析报文信号/变量(对标CANoe Graphics) 二、使用数值窗口统计信号值/变量 三、使用TS发送报文 3…...
【操作系统】实验七:显示进程列表
实验7 显示进程列表 练习目的:编写一个模块,将它作为Linux内核空间的扩展来执行,并报告模块加载时内核的当前进程信息,进一步了解用户空间和内核空间的概念。 7.1 进程 进程是任何多道程序设计的操作系统中的基本概念。为了管理…...
day10 电商系统后台API——接口测试(使用postman)
【没有所谓的运气🍬,只有绝对的努力✊】 目录 实战项目简介: 1、用户管理(8个) 1.1 登录 1.2 获取用户数据列表 1.3 创建用户 1.4 修改用户状态 1.5 根据id查询用户 1.6 修改用户信息 1.7 删除单个用户 1.8 …...
JavaScript ES6+ 语法速通
一、ES6 基础语法 1. let 和 const 声明变量 let:块级作用域,可以重新赋值。const:块级作用域,声明常量,不能重新赋值。 let name Li Hua; name Li Ming; // 可修改const age 21; // age 22; // 报错࿰…...
移动端h5自适应rem适配最佳方案
网页开发中,我们常用的单位有如下几个: px:像素固定,无法适配各分辨率的移动设备em: 该单位受父容器影响,大小为父元素的倍数rem: 因为html根元素大小为16px,所以默认 1rem 16px,rem只受根元素…...
2024年使用 Cython 加速 Python 的一些简单步骤
文章结尾有最新热度的文章,感兴趣的可以去看看。 本文是经过严格查阅相关权威文献和资料,形成的专业的可靠的内容。全文数据都有据可依,可回溯。特别申明:数据和资料已获得授权。本文内容,不涉及任何偏颇观点,用中立态度客观事实描述事情本身 文章有点长,期望您能坚持看…...
EasyExcel设置表头上面的那种大标题(前端传递来的大标题)
1、首先得先引用easyExcel的版本依赖,我那 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.6</version> </dependency> 2、然后得弄直接的实体类,&…...
【Linux网络编程】第十弹---打造初级网络计算器:从协议设计到服务实现
✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】【Linux网络编程】 目录 1、Protocol.hpp 1.1、Request类 1.1.1、基本结构 1.1.2、构造析构函数 1.1.3、序列化函数 1.1.4、反…...
无限弹窗?无限重启?
Windows开机自启目录: "%USERPROFILE%\AppData\Roaming\Microsoft\windows\StartMenu\Programs\Startup" 基于这个和 start 命令, shutdown 命令, 编写 bat 病毒程序。 无限弹窗 echo start cmd > hack.txt echo %0 >>…...
深入详解人工智能机器学习常见算法中的K-means聚类
目录 引言 1. K-means聚类的基本概念 1.1 K-means聚类的定义 1.2 K-means聚类的核心思想 1.3 K-means聚类的目标函数 2. K-means聚类的核心原理 2.1 初始化 2.2 分配 2.3 更新 2.4 迭代 3. K-means聚类的具体实现 3.1 K-means聚类的算法流程 3.2 K-means聚类的Pyt…...
lc146LRU缓存——模仿LinkedHashMap
146. LRU 缓存 - 力扣(LeetCode) 法1: 调用java现有的LinkedHashMap的方法,但不太理解反正都不需要扩容,super(capacity, 1F, true);不行吗,干嘛还弄个装载因子0.75还中途扩容一次浪费时间。 class LRUC…...
技术解密:Godot RE Tools - 游戏逆向工程的智能解决方案
技术解密:Godot RE Tools - 游戏逆向工程的智能解决方案 【免费下载链接】gdsdecomp Godot reverse engineering tools 项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp Godot RE Tools 是一款专业的Godot游戏逆向工程工具,能够从AP…...
Triton推理服务生产实践:模型部署的可观测性与弹性保障
1. 项目概述:当模型走出Jupyter,真正开始呼吸真实世界的空气“From Notebook to Production: Running ML in the Real World (Part 4)”——这个标题本身就像一句暗号,专为那些在Jupyter里调通了模型、画出了漂亮ROC曲线、却在部署时被现实迎…...
如何在5分钟内为Unity游戏安装BepInEx模组框架:终极完整指南
如何在5分钟内为Unity游戏安装BepInEx模组框架:终极完整指南 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx(全称Bepis Injector Extensible&#…...
5分钟搞定B站视频下载:免费解锁大会员4K高清画质
5分钟搞定B站视频下载:免费解锁大会员4K高清画质 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 还在为无法离线观看B站精…...
5分钟掌握跨平台音乐格式转换:Unlock-Music浏览器端音频解密终极指南
5分钟掌握跨平台音乐格式转换:Unlock-Music浏览器端音频解密终极指南 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项…...
2026年腾讯云OpenClaw/Hermes Agent配置Token Plan部署步骤详解
2026年腾讯云OpenClaw/Hermes Agent配置Token Plan部署步骤详解。OpenClaw是开源的个人AI助手,Hermes Agent则是一个能自我进化的AI智能体框架。阿里云提供计算巢、轻量服务器及无影云电脑三种部署OpenClaw 与 Hermes Agent的方案、百炼Token Plan兼容主流 AI 工具&…...
Verilog仿真避坑指南:当多个信号同时驱动一根线时,到底听谁的?(附强度建模详解)
Verilog多驱动冲突实战解析:从信号博弈到精准调试 当三个模块同时向同一根总线写入数据时,仿真器究竟该听谁的?这个看似简单的场景背后,隐藏着Verilog仿真中最容易踩坑的多驱动冲突问题。在实际项目中,我曾见过工程师花…...
7步搞定MASA全家桶汉化包:让你的Minecraft模组说中文
7步搞定MASA全家桶汉化包:让你的Minecraft模组说中文 【免费下载链接】masa-mods-chinese 一个masa mods的汉化资源包 项目地址: https://gitcode.com/gh_mirrors/ma/masa-mods-chinese 还在为MASA模组的英文界面而烦恼吗?作为中文Minecraft玩家&…...
不是碳基,也不是硅基!你好,我是金蝶灵基,企业AI原生操作系统!
AI是危还是机?自年初小龙虾“爆炸”以来,很多企业服务巨头都或主动或被动地陷入了深深地思考:连一直仰望并追捧的偶像——Salesforce都开始快速变革,我们能无动于衷吗?这半年以来,中国软件网注意到…...
JWT权限治理:从无状态凭证到可管控权限单元
1. 这不是又一个“登录后跳转首页”的玩具项目JWT在Java Web权限控制里被讲烂了,但绝大多数人写的所谓“基于JWT的系统”,其实连Token刷新都靠前端定时重登,后端连黑名单都没建,更别提并发登出、设备绑定、权限粒度动态变更这些真…...
