Linux systemd-analyze dump 怎样按 unit 过滤服务管理器状态
排查某个服务时,如果只想查看服务管理器保存的 unit 状态,推荐使用 systemd-analyze dump 并在后面加 unit 名称或 glob 模式,例如 systemd-analyze --no-pager dump 'sshd.service'。它输出的是面向人工阅读的服务管理器状态序列化结果,不是启动耗时报告,也不是依赖图。
官方手册:https://www.freedesktop.org/software/systemd/man/latest/systemd-analyze.html
过滤的关键是把 unit 模式放在 dump 后面,并用引号保护通配符;需要查看用户级服务时再加--user。如果结果要交给脚本长期解析,不要依赖 dump 的文本布局,应改用systemctl show查询固定属性。
先确认 dump 查看的是哪一个服务管理器
没有过滤模式时,dump 会输出一个通常很长的服务管理器状态。默认连接 system 实例;同一条命令加上 --user 后,查询对象变为当前用户的 user service manager。排查前先把实例选对,否则“找不到 unit”可能只是看错了管理器。
# 默认查看 system 实例,并关闭分页,便于完整阅读输出 systemd-analyze --no-pager dump # 查看当前用户的 user 实例,避免把两套 unit 混在一起 systemd-analyze --user --no-pager dump
这一步只解决“状态从哪里来”的问题。dump 适合观察服务管理器内部的整体状态;启动阶段耗时应看其他专用命令,依赖关系也不属于本文的过滤范围。
用 unit 名称或模式缩小状态范围
官方语法允许在 dump 后提供可选的 unit 名称模式。精确排查单个服务时直接写完整 unit 名;同一类服务可以使用 glob。建议给模式加引号,让通配符交给 systemd 处理,而不是先被 Shell 展开。
# 精确查看一个 unit 的服务管理器状态块 systemd-analyze --no-pager dump 'sshd.service' # 只关注同一前缀的服务,通配符由 systemd-analyze 处理 systemd-analyze --no-pager dump 'worker@*.service' # user unit 使用相同的过滤思路,但要切换到 user manager systemd-analyze --user --no-pager dump 'pipewire*.service'
如果模式没有命中,先检查 unit 名称是否写对,再确认它属于 system 还是 user 实例。不要为了“看全”而无条件保存完整 dump:输出可能很长,过滤后的范围更适合现场排查。

按 unit 状态块读取线索,不要假定完整格式
过滤后的结果仍然是面向人的文本。通常可以先找到 Unit 标识,再结合 Description、状态信息和关联字段判断线索。阅读时关注“这个 unit 属于谁、当前呈现什么状态、还有哪些关联信息”,而不是把每一行当成稳定 API。
例如现场查看时可以把输出保存到临时文件,再用普通文本工具定位 unit 名称。下面的命令只用于人工查找,不把结果变成程序接口:
# 保存一个过滤后的人工排查副本,再定位目标 unit 的出现位置 dump_file="$(mktemp)" systemd-analyze --no-pager dump 'sshd.service' >"$dump_file" grep -n -A18 -B2 -- 'sshd.service' "$dump_file" rm -f "$dump_file" # 排查结束后清理临时文件
这里的 grep 只是帮助人快速跳到相关段落,不能据此断言每个 systemd 版本都会有同样的行数、字段顺序或缩进。官方手册明确提示 dump 的输出格式可能变化,不能被应用程序解析。
输出要交给脚本时改用固定属性接口
如果目标是监控、部署脚本或长期兼容的自动化,建议把任务拆开:用 systemd-analyze dump 做一次性人工诊断,用 systemctl show 读取明确的属性。后者可以列出你真正需要的字段,例如 LoadState、ActiveState 和 SubState。
# 脚本读取固定属性,避免解析 dump 的可变文本布局 systemctl show 'sshd.service' \ --property=LoadState,ActiveState,SubState \ --no-pager # user unit 也要让查询端保持同一个实例范围 systemctl --user show 'pipewire.service' \ --property=LoadState,ActiveState,SubState \ --no-pager
这样做不是说 dump 没有价值,而是把“观察内部状态”和“读取稳定属性”分成两条边界。前者适合故障现场形成线索,后者适合让程序消费。

三个容易混淆的边界
第一,过滤模式不是 Shell 的文件匹配。模式应该作为参数传给 systemd-analyze;用单引号保护 *,避免当前目录中的文件名改变命令参数。
第二,system 与 user 不是同一套 unit。看到 unit 名并不代表它属于当前正在查询的实例。命令行中的 --user 必须和排查对象保持一致。
第三,dump 不是稳定数据格式。可以读它来定位现场线索,但不要编写依赖字段顺序、固定缩进或固定段落长度的解析器;需要固定属性时使用 systemctl show --property=...。
相关问题
为什么加了 unit 名称仍然看到很多内容?
先确认模式是否真的命中目标,也确认当前查询的是 system 还是 user manager。dump 的输出是服务管理器状态序列化,不等同于只返回一行属性。
能不能用 grep 解析 dump 做监控?
不建议。grep 可以帮助人工定位段落,但官方不保证 dump 输出格式稳定;监控应使用 systemctl show 并显式指定属性。
查看用户服务为什么要加 --user?
system 实例与 user 实例由不同的服务管理器维护。加上 --user 才会把 dump 和查询范围切换到当前用户的服务管理器。
Linux systemd.resource-control 怎样限制 CPU 配额
- 上一篇
- Linux systemd.resource-control 怎样限制 CPU 配额
- 下一篇
- HTML inert 属性怎样让模态框外内容不可交互
-
- 文章 · linux | 1小时前 | linux运维 · Linux systemd 服务限流 cgroup CPUQuota systemd.resource-control
- Linux systemd.resource-control 怎样限制 CPU 配额
- 148浏览 收藏
-
- 文章 · linux | 1小时前 | 文件系统 · Linux 挂载树 mount_setattr 挂载属性 Mount API
- Linux mount_setattr 怎样批量调整挂载属性
- 432浏览 收藏
-
- 文章 · linux | 2小时前 |
- Linux proc_pid_fdinfo 怎样查看 epoll 监听项
- 227浏览 收藏
-
- 文章 · linux | 2小时前 |
- Linux rsync 怎样保留权限并排除缓存目录
- 308浏览 收藏
-
- 文章 · linux | 2小时前 |
- Linux nftables 怎样按接口限制入站端口
- 383浏览 收藏
-
- 文章 · linux | 2小时前 |
- Linux pidfd_open 怎样稳定监控进程退出
- 247浏览 收藏
-
- 文章 · linux | 2小时前 | Linux ·
- Linux journalctl --rotate 怎样手动切换当前日志文件
- 157浏览 收藏
-
- 文章 · linux | 2小时前 | Linux systemctl systemd.swap 交换文件 swapfile swap.target
- Linux systemd.swap 怎样配置交换文件单元
- 263浏览 收藏
-
- 文章 · linux | 21小时前 |
- Linux find -files0-from 怎样安全读取文件列表
- 391浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- PubMedQA
- 深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
- 857次使用
-
- H2O EvalGPT
- H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
- 862次使用
-
- LMArena
- LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
- 938次使用
-
- HELM
- 深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
- 919次使用
-
- MMBench
- MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
- 747次使用
-
- 详解golang执行Linuxshell命令完整场景下的使用方法
- 2023-01-07 426浏览
-
- go程序部署到linux上运行的实现方法
- 2023-01-02 387浏览
-
- Linux系统下Go语言开发环境搭建
- 2023-01-07 242浏览
-
- 使用golang获取linux上文件的访问/创建/修改时间
- 2022-12-31 238浏览
-
- 在Linux系统中安装Go语言的详细教程
- 2022-12-29 402浏览
