首页/系统/Linux 运维命令速查/systemctl cat 查看单元完整定义
systemd 与服务42 条

systemctl cat 查看单元完整定义

systemctl cat 输出单元及其所有 drop-in 的合成内容与来源路径,是确认「最终生效配置」的唯一可靠方式。

Linux 运维命令速查系统更新于 2026-10-13

cat 查看单元定义

systemctl cat 输出一个单元的完整合成定义:主单元文件加上所有 drop-in 片段(.d 目录下的 .conf),按生效顺序合并后展示,每个片段前用 # 注释标出来源路径。当出现「改了配置没生效」「不知道到底是哪个文件在起作用」时,它是唯一可靠的权威视图,比逐个目录翻文件快得多。

基本信息

适用平台Linux(systemd)
命令语法systemctl cat 单元...
输出内容主单元文件与全部 drop-in,按生效顺序拼接,来源路径以注释形式给出
相关命令systemctl show -p FragmentPath 与 -p DropInPaths 看真实加载路径;systemctl edit 创建 drop-in
权限说明读取单元文件普通用户即可,修改需要 root

典型使用场景

  • 确认最终配置:单元文件与 drop-in 叠加之后到底长什么样
  • 排查改了不生效:先确认生效源是不是你以为的那个文件
  • 审计第三方发行包:看服务实际带有哪些安全与资源限制
  • 排容器与编排问题:确认 ExecStart 与 Environment 的真实取值
  • 交付留痕:把 cat 的输出附进变更单,作为配置基线

常用示例

常用示例
systemctl cat nginx                                  # 完整合成定义
systemctl cat myapp | sed -n '/\[Service\]/,$p'     # 只看 Service 段
systemctl show myapp -p FragmentPath                 # 主单元文件的实际路径
systemctl show myapp -p DropInPaths                  # 生效的 drop-in 列表
ls /etc/systemd/system/myapp.service.d/              # 手工查看 drop-in 目录
systemctl cat docker.service containerd.service      # 一次查看多个单元

相关查看方式对比

命令看到的内容注意
systemctl cat磁盘上合成后的全文与来源路径不反映内存中尚未 reload 的旧定义
systemctl show -p FragmentPath实际加载的主单元文件路径用于确认 /etc 是否覆盖了 /usr/lib 的版本
systemctl show -p DropInPaths实际生效的 drop-in 列表输出为空说明没有 drop-in
systemctl status运行状态与最近日志不给完整配置,只能辅助判断
systemctl --versionsystemd 版本部分指令与配置字段依赖版本
输出里每个 # 注释行标出该片段来自哪个文件;drop-in 按文件名字典序依次应用、后面的覆盖前面的,所以 20- 开头的片段会盖过 10- 开头的。排查「改了没生效」的第一步就是看这些来源注释。
cat 读的是磁盘当前内容,而运行中的管理器用的是上次 daemon-reload 时载入的定义。编辑单元文件后如果 status 提示 unit file changed on disk,说明两者已经不一致,必须 daemon-reload 再重启服务。
想改配置又不想动发行版自带的单元文件,用 systemctl edit 单元 生成 drop-in 片段,它会自动写到 /etc/systemd/system/单元.d/override.conf;systemctl edit --full 则是整份覆盖。前者在软件包升级后仍然保留叠加关系,通常是更稳的做法。

易错点

  • cat 显示的是磁盘合成结果,管理器若未 daemon-reload 可能仍在用旧定义,两者要一起核对
  • 同名单元被 /etc/systemd/system 覆盖 /usr/lib/systemd/system 的版本时,只看后者会误判实际配置
  • drop-in 按文件名字典序应用、后者覆盖前者,随意命名会改变覆盖关系
  • cat 只展示静态配置,条件式配置是否成立要结合 status 与日志判断
  • EnvironmentFile 指向的文件内容不会出现在 cat 输出里,排查变量问题要单独打开该文件

数据来源与参考

  • man 1 systemctl(cat)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌