systemd-cgls 是 systemd 提供的可视化 cgroup 层级结构的命令,以树状形式展示所有 cgroup 及其所属 systemd 单元(如 service、scope、slice),支持默认全树查看、按控制器(如 -g memory)聚焦资源子树、限定路径(如 system.slice)精准展开,并需配合 systemd-cgtop 等工具查看实际资源数值。

systemd-cgls 是 systemd 提供的用于可视化 cgroup 层级结构的命令,它能以树状形式展示当前系统中所有 cgroup 控制组及其所属的 systemd 单元(如 service、scope、slice),特别适合快速定位哪些单元占用了哪些 cgroup 资源(如 CPU、memory、IO 等)。
基础用法:查看默认 root cgroup 树
直接运行以下命令即可显示整个 cgroup 层级(按 systemd 单元组织):
-
systemd-cgls—— 默认从/sys/fs/cgroup/下的 unified 或 legacy hierarchy 中读取,并以 systemd 的 slice/service/scope 为节点生成树 - 输出中每行代表一个 cgroup 目录,缩进表示父子关系;单元名(如
sshd.service)会明确标出其归属的 slice(如system.slice)
聚焦特定资源控制器:只看 memory 或 cpu 子树
若只想观察某类资源的分配情况(比如 memory 使用层级),可用 -g 指定控制器:
-
systemd-cgls -g memory—— 只显示启用了 memory controller 的 cgroup 树(需内核支持且已启用) -
systemd-cgls -g cpu,cpuacct—— 同时查看 CPU 配额与统计信息所在的 cgroup 路径 - 注意:控制器名称需与
/sys/fs/cgroup/下实际挂载的子系统名一致(如 cgroup v2 中常用memory、cpu;v1 中可能是memory、cpuacct)
限定范围:只查某个 slice 或 service 下的子树
避免信息过载,可指定路径精准查看:
-
systemd-cgls system.slice—— 仅展开system.slice及其内部所有 service(如nginx.service、dbus.service) -
systemd-cgls /user.slice/user-1000.slice—— 查看指定用户的 session cgroup 结构(适用于排查桌面或 SSH 会话资源) - 路径支持绝对 cgroup 路径(v2)或 unit 名(v1/v2 兼容模式),systemd 会自动解析对应层级
结合其他工具验证资源占用
systemd-cgls 展示的是结构,不直接显示数值。要确认实际资源消耗,需配合:
-
systemd-cgtop—— 实时排序显示各 cgroup 的 CPU、memory、IO 使用率(类似 top) -
systemd-cgstat—— 输出每个 cgroup 当前的资源统计摘要(如 memory.current、cpu.stat) - 直接读取文件:例如
cat /sys/fs/cgroup/system.slice/nginx.service/memory.current获取当前内存用量(v2)











