linux命令 systemctl 和 supervisord 区别及用法解读
目录
- 基础与背景
- 服务管理范围
- 配置文件和管理方式
- 监控与日志
- 依赖管理
- 适用场景
- 常用命令对照表
- 实际应用场景举例
- 优缺点对比小结
- 参考链接
1. 基础与背景
systemctl 和 supervisord 都是用于管理和控制服务(进程)的工具,但它们在设计、使用场景和功能上有所不同。以下是它们之间的主要区别:
- systemctl:
- systemctl 是 systemd 的一部分,systemd 是 Linux 系统中的系统和服务管理器,负责在系统启动时管理系统进程、挂载文件系统、处理网络配置等。
- systemctl 通过管理 systemd 单元(unit files)来控制系统服务。
- systemctl 通常是现代 Linux 发行版中的默认服务管理工具(如 CentOS 7+, Ubuntu 15.04+)。
- supervisord:
- supervisord 是一个进程管理工具,专门用于监控和管理独立的后台进程。
- 它是 Python 编写的,并且被设计用于跨平台运行,主要用于启动、监控、重启应用程序。
- supervisor 最早主要用于开发环境和特定服务的进程管理,通常不管理系统服务。
2. 服务管理范围
- systemctl(systemd):
- 负责管理所有系统服务,包括启动、停止、重启、启用(开机启动)和禁用服务。
- 可以管理系统级别的服务,比如网络服务、守护进程等。
- 更侧重于系统启动时的服务管理,并且可以管理定时任务(通过 timers)、设备挂载、网络配置等。
- supervisord:
- 主要用于管理用户定义的应用进程,例如应用程序、后台任务、Web服务等。
- 适合多进程的应用程序或需要长期运行的任务的监控和管理。
- supervisor 可以定期监控和重启由于异常退出的进程。
3. 配置文件和管理方式
- systemctl:
- 使用 unit files,它们位于 /etc/systemd/system/ 或 /lib/systemd/system/ 目录下。这些文件通常以 .service、.target、.mount、.timer 等后缀结尾。
- 配置文件格式相对固定,基于 INI 风格,包含 [Unit]、[Service]、[Install] 等配置段。
- 常见命令:
- systemctl start/stop/restart :启动/停止/重启服务。
- systemctl enable/disable :启用/禁用服务开机启动。
systemctl(systemd)配置文件示例
示例1:简单的自定义服务
[Unit]
Description=My Simple Service
After=network.target[Service]
ExecStart=/usr/bin/python3 /opt/myscript.py
Restart=on-failure[Install]
WantedBy=multi-user.target
说明:此配置定义了一个在网络服务启动后运行的 Python 脚本服务,异常退出时自动重启。
示例2:带环境变量和工作目录的服务
[Unit]
Description=Node.js Web App[Service]
WorkingDirectory=/opt/webapp
ExecStart=/usr/bin/node server.js
Environment=NODE_ENV=production PORT=8080
Restart=always[Install]
WantedBy=multi-user.target
说明:此配置用于 Node.js Web 应用,指定了工作目录和环境变量,并设置为始终重启。
- supervisord:
- 使用独立的配置文件,通常位于 /etc/supervisor/supervisord.conf 或类似目录中。
- 进程定义在 [program:x] 区块中,指定每个进程的启动命令、环境变量、日志、重启策略等。
- 常见命令:
- supervisorctl start/stop :启动/停止某个进程。
- supervisorctl reread/update:重新读取配置文件并应用更改。
supervisord 配置文件示例
示例1:管理单个 Python 进程
[program:myworker]
command=python3 /opt/worker.py
autostart=true
autorestart=true
stderr_logfile=/var/log/myworker.err.log
stdout_logfile=/var/log/myworker.out.log
说明:此配置定义了一个自动启动和自动重启的 Python worker 进程,并分别记录标准输出和错误日志。
示例2:管理 Node.js 服务并设置环境变量
[program:webapp]
command=node /opt/webapp/server.js
directory=/opt/webapp
autostart=true
autorestart=true
environment=NODE_ENV="production",PORT="8080"
stdout_logfile=/var/log/webapp.log
stderr_logfile=/var/log/webapp.err.log
说明:此配置用于 Node.js 服务,指定了工作目录和环境变量,并配置了日志输出。
supervisord 可视化界面(Web UI)配置示例
Supervisor 自带一个简单的 Web 管理界面,可以通过配置 [inet_http_server] 实现。该界面支持进程的启动、停止、重启、日志查看等操作。
示例:启用 Web 管理界面
[inet_http_server]
port=0.0.0.0:9001 ; 监听所有网卡的 9001 端口
username=admin ; 登录用户名
password=123456 ; 登录密码
说明:此配置启用了 supervisord 的 Web UI,访问 http://服务器IP:9001 即可进入管理界面。可通过用户名和密码进行身份验证。
Web UI 功能简介:
- 查看所有受管进程的状态
- 启动、停止、重启进程
- 查看进程日志
- 便于远程管理和监控
注意:生产环境建议配置防火墙或反向代理,限制 Web UI 的访问范围,避免安全风险。
详细说明
Supervisor 的 Web UI 是一个基于 HTTP 的管理界面,默认集成在 supervisord 主进程中,无需额外安装。通过 Web 浏览器即可远程管理和监控所有受 supervisord 管理的进程。
1. 访问方式
- 启用 [inet_http_server] 后,在浏览器中访问
http://<服务器IP>:9001
。 - 需要输入配置文件中设置的用户名和密码进行登录。
- 支持局域网和公网访问(建议生产环境仅限内网或通过 VPN/反向代理访问)。
2. 界面主要功能
- 进程状态总览:主界面显示所有受管进程的名称、状态(RUNNING、STOPPED、FATAL 等)、启动时间、进程号等。
- 进程操作:可对单个或全部进程进行启动、停止、重启操作。
- 日志查看:可直接在网页中查看每个进程的标准输出(stdout)和标准错误(stderr)日志,支持实时刷新。
- 进程分组:如果配置了 group,可以分组显示和管理进程。
- 自动刷新:界面支持自动刷新,便于实时监控。
3. 常见操作演示
- 启动/停止/重启进程:点击对应进程后的"Start"、“Stop”、"Restart"按钮即可。
- 查看日志:点击"View Log"可弹出日志窗口,支持滚动和刷新。
- 一键操作全部进程:页面顶部有"Start All"、“Stop All”、"Restart All"按钮。
4. 权限与安全建议
- 默认仅支持单一用户名和密码,建议设置复杂密码。
- 建议仅监听 127.0.0.1(即
port=127.0.0.1:9001
),通过 SSH 隧道、VPN 或 Nginx 反向代理(带认证)进行访问。 - 如需公网访问,务必做好防火墙限制和强密码设置。
- 不支持多用户分级权限,适合小型团队或个人运维场景。
5. 常见问题
- 端口被占用:如 9001 端口被占用,可修改为其他未被占用端口。
- 无法访问:检查 supervisord 是否已重启、端口监听地址是否正确、防火墙是否放行。
- 安全风险:切勿将 Web UI 直接暴露在公网,避免被暴力破解。
6. 相关截图与文档
- 官方界面截图可参考:Supervisor Web UI 截图
- 更多配置说明见:Supervisor 官方文档 - inet_http_server
4. 监控与日志
- systemctl:
- systemd 自带强大的日志管理功能,通过 journalctl 来查看系统和服务的日志。
- 支持将日志集中管理并可以通过高级过滤器进行查询。
- supervisord:
- supervisor 支持为每个进程定义独立的日志文件,并可以配置标准输出和错误输出重定向。
- 可以实时查看每个进程的日志文件,但不会像 systemd 那样提供统一的日志查看命令。
5. 依赖管理
- systemctl:
- 可以处理服务之间的依赖关系。例如,服务 A 依赖于服务 B,那么 systemd 可以确保在启动 A 之前先启动 B。
- 可以通过 Before=, After=, Requires=, Wants= 等指令来设置依赖顺序。
- supervisord:
- 不直接处理依赖关系。各个进程通常被独立管理,如果需要依赖关系管理,需要手动配置顺序或借助外部工具。
6. 适用场景
- systemctl(systemd):
- 更适合管理系统级别的服务、网络服务、守护进程、设备挂载等。
- 推荐用于服务器和系统服务的管理,因为它提供了丰富的功能来处理服务依赖、启动顺序、资源限制等。
- supervisord:
- 更适合管理独立应用程序、Web 服务、批处理任务或需要独立监控的进程。
- 尤其适合开发环境或容器中需要管理多个进程的情况。
7. 常用命令对照表
功能 | systemctl 命令 | supervisord/supervisorctl 命令 |
---|---|---|
启动服务/进程 | systemctl start | supervisorctl start |
停止服务/进程 | systemctl stop | supervisorctl stop |
重启服务/进程 | systemctl restart | supervisorctl restart |
查看状态 | systemctl status | supervisorctl status |
开机自启 | systemctl enable | 配置 autostart=true |
禁用开机自启 | systemctl disable | 配置 autostart=false |
查看日志 | journalctl -u | 查看配置的日志文件 |
重新加载配置 | systemctl daemon-reload | supervisorctl reread/update |
8. 实际应用场景举例
- systemctl 典型场景:
- 管理 Nginx、MySQL、Docker 等系统服务
- 设置服务开机自启
- 管理定时任务、设备挂载等
- supervisord 典型场景:
- 管理 Python、Node.js 等 Web 应用进程
- 监控爬虫、定时脚本等长期运行的任务
- 容器(如 Docker)中一键管理多个自定义进程
9. 优缺点对比小结
对比项 | systemctl (systemd) | supervisord |
---|---|---|
管理对象 | 系统服务、守护进程 | 应用进程、用户自定义进程 |
配置复杂度 | 较高,需编写 unit 文件 | 较低,配置灵活 |
日志管理 | 集中管理,支持过滤 | 各进程独立日志 |
依赖管理 | 支持服务依赖、启动顺序 | 不支持,需要手动处理 |
适用场景 | 系统服务、服务器、生产环境 | 应用进程、开发环境、容器 |
自动重启 | 支持(需配置 Restart) | 默认支持 |
跨平台 | 仅 Linux | 跨平台(Python 环境) |
10. 参考链接
- systemd 官方文档
- Supervisor 官方文档
- systemctl 使用详解
- Supervisor 配置详解
两者可以根据不同的场景结合使用。如果你的需求是管理系统服务,systemctl 是更合适的选择;如果你需要监控和自动重启特定的应用程序进程,supervisord 更适合。
相关文章:

linux命令 systemctl 和 supervisord 区别及用法解读
目录 基础与背景服务管理范围配置文件和管理方式监控与日志依赖管理适用场景常用命令对照表实际应用场景举例优缺点对比小结参考链接 1. 基础与背景 systemctl 和 supervisord 都是用于管理和控制服务(进程)的工具,但它们在设计、使用场景和…...

Spring Boot + MyBatis 实现的简单用户管理项目的完整目录结构示例
📁 示例项目结构(基于 Maven) user-management/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/example/usermanagement/ │ │ │ ├── controller/ │ │ │ │ └── UserC…...
NodeJS全栈开发面试题讲解——P5前端能力(React/Vue + API调用)
✅ 5.1 如何使用 React/Vue 发起后端请求?用什么库? 面试官您好,在实际项目中我们通常使用 axios、fetch 或框架提供的封装库发起后端请求。 🔧 常用库对比: 库框架适配优点axios通用默认支持拦截器、取消请求、请求体…...
[001]从操作系统层面看锁的逻辑
从操作系统层面,锁 (Lock) 是一种同步机制,用于控制多个线程或线程对共享资源的访问,防止竞态条件(race condition).常见的锁包括互斥锁(mutex)、读写锁(read-write lock)、自旋锁(spinlock)等。…...
初识 Pytest:测试世界的智能助手
概述 在编写程序的过程中,我们常常需要确认代码是否按照预期工作。为了提高效率并减少人为错误,我们可以借助工具来帮助我们完成这一过程。Pytest 就是这样一个用于编写和运行测试的 Python 工具。 什么是 Pytest? Pytest 是一个用于 Pyth…...

stm32 + ads1292心率检测报警设置上下限
这个项目是在做心率检测的时候一个小伙伴提出来的,今年五一的时候提出来的想法,五一假期的时候没时间,也没心情做这个,就把这个事情搁置了,在月中做工作计划的时候,就把这个小项目排进来了,五一…...

项目练习:element ui 的icon放在button的右侧
文章目录 一、需求描述二、左侧实现三、右侧实现 一、需求描述 我们知道,element ui的button一般都会配置一个icon 这个icon默认是放在左侧的。 如何让它放在右侧了? 二、左侧实现 <el-buttontype"primary"plainicon"el-icon-d-arr…...

性能诊断工具AWR配置策略与报告内容解析
AWR(Automatic Workload Repository)是 Oracle 数据库中的一个重要性能诊断工具。AWR 会按照固定的时间间隔自动收集数据库系统的性能统计信息。这些信息涵盖了数据库运行状态的方方面面,像SQL 执行情况、系统资源利用率、等待事件等。AWR抓取…...

Tailwind CSS 实战,基于 Kooboo 构建 AI 对话框页面(三):实现暗黑模式主题切换
基于前两篇的内容,为页面添加主题切换功能,实现网站页面的暗黑模式: Tailwind css实战,基于Kooboo构建AI对话框页面(一)-CSDN博客 Tailwind css实战,基于Kooboo构建AI对话框页面(…...
OleDbParameter.Value 与 DataTable.Rows.Item.Value 的性能对比
OleDbParameter.Value 与 DataTable.Rows.Item.Value 的性能对比 您提到的两种赋值操作属于不同场景,它们的性能和稳定性取决于具体使用方式。下面从几个维度进行分析: 1. 操作本质对比 (1)OleDbParameter.Value 用途…...
Unity3D ET框架游戏脚本系统解析
前言 ET框架在Unity3D中实现的GamePlay脚本系统是一种革命性的、基于ECS(实体-组件-系统)架构的设计,它彻底改变了传统的基于MonoBehaviour的游戏逻辑编写方式。其核心思想是追求高性能、高解耦、易热更新,特别适合大型复杂的网络…...
函数的定义、调用、值传递、声明、非安全函数
函数 函数(英文“function”)把一些经常用到的代码封装起来,这样可以减少一些冗余代码、重复的代码。一个大的程序,它是由很多很多程序块组成的,每个模块实现一个特定的功能。 函数的定义 格式 英文版 return_typ…...

MySQL 8.0 OCP 英文题库解析(十一)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题91~100 试题91…...
机器学习算法-k-means
今天我们用 「超市顾客分组」 的例子来讲解K-means算法,从原理到实现一步步拆解,保证零基础也能懂! 🛒 例子背景 假设你是超市经理,手上有顾客的以下数据: 顾客ID每月消费金额(元)…...

ADQ36-2通道2.5G,4通道5G采样PXIE
ADQ36是一款高端12位四通道灵活数据采集板,针对高通道数科学应用进行了优化。ADQ36具有以下特性: 4 / 2模拟输入通道每通道2.5 / 5 GSPS7gb/秒的持续数据传输速率两个外部触发器通用输入/输出(GPIO)ADQ36数字化仪包括固件FWDAQ ADQ36简介 特…...
LLM:decoder-only 思考
文章目录 前言一、KV-cache1、为什么使用KV-cache2、KV-cache的运作原理 二、Decoder-only VS Encoder-Decoder1、Decoder-only2、Encoder-Decoder 三、Causal LM VS PrefixLM总结 前言 decoder-only模型是目前大模型的主流架构,由于OpenAI勇于挖坑踩坑,…...

数字创新智慧园区建设及运维方案
该文档是 “数字创新智慧园区” 建设及运维方案,指出传统产业园区存在管理粗放等问题,“数字创新园区” 通过大数据、AI、物联网、云计算等数字化技术,旨在提升园区产业服务、运营管理水平,增强竞争力,实现绿色节能、高效管理等目标。建设内容包括智能设施、核心支撑平台、…...

【科研绘图系列】R语言绘制森林图(forest plot)
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理画图系统信息介绍 本文介绍使用R语言绘制森林图(forest plot)的方法。首先加载必要的R包(grid、forestploter、openxlsx、stringr),导入并预处…...
Springcloud Alibaba自定义负载均衡详解
主要说一下springcloud alibaba 在使用nacos注册中心过程中,请求服务负载均衡的配置方法 引入依赖包 这个依赖包是springcloud在新版本的负载均衡实现,2020版本以上 <dependency><groupId>org.springframework.cloud</groupId><ar…...
深度学习---负样本训练
一、负样本的本质与核心作用 1. 定义与范畴 负样本(Negative Sample)是与目标样本(正样本)在语义、特征或任务目标上存在显著差异的样本。其核心价值在于通过对比学习引导模型学习样本间的判别性特征,而非仅记忆正样本…...

SpringAI+DeepSeek大模型应用开发实战
内容来自黑马程序员 这里写目录标题 认识AI和大模型大模型应用开发模型部署方案对比模型部署-云服务模型部署-本地部署调用大模型什么是大模型应用传统应用和大模型应用大模型应用 大模型应用开发技术架构 SpringAI对话机器人快速入门会话日志会话记忆 认识AI和大模型 AI的发…...
【Python Cookbook】文件与 IO(一)
文件与 IO(一) 1.读写文本数据2.打印输出至文件中3.使用其他分隔符或行终止符打印4.读写字节数据5.文件不存在才能写入 1.读写文本数据 你需要读写各种不同编码的文本数据,比如 ASCII,UTF-8 或 UTF-16 编码等。 使用带有 rt 模式…...
STM32 HAL库函数学习 GPIO篇
1、void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, const GPIO_InitTypeDef *pGPIO_Init) GPIO外设属于是任何芯片的最基础功能 ,STM32各个系列的GPIO初始化都是一致的,有不同的是部分系列在IO复用使用了单独一个成员属性Alternate 来表明这个IO的具体复用功…...

如何以 9 种方式将照片从 iPhone 传输到笔记本电脑
您的 iPhone 可能充满了以照片和视频形式捕捉的珍贵回忆。无论您是想备份它们、在更大的屏幕上编辑它们,还是只是释放设备上的空间,您都需要将照片从 iPhone 传输到笔记本电脑。幸运的是,有 9 种方便的方法可供使用,同时满足 Wind…...

根据jvm源码剖析类加载机制
根据jvm源码剖析类加载机制 java Test.class之后的大致流程 java Test.class ----> 对于windows操作系统 ----> java.exe调用jvm.dll文件创建JVM, ----> 在创建JVM中先由C的代码创建Boostarp(引导)类加载器, ----&g…...
Mixly1.0/2.0/3.0 (windows系统) 安装教程及使用常见问题解决
大家好!长期以来,不少用户在使用 Mixly 软件过程中遇到了各类问题。为了帮助大家更顺畅地使用该软件,齐护机器人工程师结合自身丰富经验,精心总结并推出了本期教程。在本教程中,我们将从 Mixly 图形化编程软件的安装步…...

DDS通信中间件——DDS-TSN规范
DDS通信中间件——DDS-TSN规范 做了十年DDS通信中间件产品的程序员和大家分享一下对DDS这套规范的个人理解。预期本系列文章将包括以下内容陆续更新: DDS规范概述DCPS规范解读 & QoS策略XTypes规范解读RTPS规范解读DDS安全规范解读DDS-RPC规范解读(…...

JWT安全:弱签名测试.【实现越权绕过.】
JWT安全:假密钥【签名随便写实现越权绕过.】 JSON Web 令牌 (JWT)是一种在系统之间发送加密签名 JSON 数据的标准化格式。理论上,它们可以包含任何类型的数据,但最常用于在身份验证、会话处理和访问控制机制中发送有关用户的信息(“声明”)。…...
MATLAB实现井字棋
一、智能决策系统与博弈游戏概述 (一)智能决策系统核心概念 智能决策系统(Intelligent Decision System, IDS)是通过数据驱动和算法模型模拟人类决策过程的计算机系统,核心目标是在复杂环境中自动生成最优策略&#…...

Baklib知识中台加速企业服务智能化实践
知识中台架构体系构建 Baklib 通过构建多层级架构体系实现知识中台的底层支撑,其核心包含数据采集层、知识加工层、服务输出层及智能应用层。在数据采集端,系统支持对接CRM、ERP等业务系统,结合NLP技术实现非结构化数据的自动抽取࿱…...