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…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...
Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
