sudo systemd-cgtop 可实时查看 systemd 服务资源占比,默认按 cpu 降序排列,以 slice/service 为单位聚合展示 /system.slice 下服务;支持按内存排序、限制行数、过滤关键词等操作,需 sudo 权限且依赖 cgroup 管理。

直接运行 sudo systemd-cgtop 就能看到所有 systemd 服务的实时资源占比排行——它默认按 CPU 使用量降序排列,且天然以 slice 和 service 为单位聚合展示,正好覆盖 /system.slice/xxx.service 这类标准服务分组。
确认你看到的是 systemd 服务层级
systemd-cgtop 的 Control Group 列显示路径,关键识别点如下:
-
/system.slice:代表全部系统服务总和 -
/system.slice/sshd.service、/system.slice/docker.service、/system.slice/nginx.service:单个服务的完整 cgroup 路径 -
/user.slice或/kubepods.slice等不属于 systemd 服务范畴,可忽略或用过滤排除
快速聚焦 systemd 服务的实操方法
- 只看前 10 个最耗资源的服务:
sudo systemd-cgtop -n 10 - 按内存使用量排序(查内存大户):
sudo systemd-cgtop -p memory - 同时按内存排序 + 限制 8 行 + 百分比显示:
sudo systemd-cgtop -p memory -n 8 -P - 实时筛选含 “redis” 的服务行(非交互模式):
sudo systemd-cgtop | grep '\.service' | grep redis
注意三个易错细节
- 必须加
sudo,否则无法读取/sys/fs/cgroup/system.slice/下多数服务的统计文件 -
systemd-cgtop显示的是 整个 control group 的聚合值,比如/system.slice/docker.service包含该服务下所有容器进程的 CPU 和内存总和,不是单个进程 - 默认刷新间隔是 2 秒;如需更快响应,加
-d 0.5(半秒刷新),但频繁轮询会轻微增加开销
它不依赖 Docker 或 Kubernetes 插件,只要服务由 systemd 启动并纳入 cgroup 管理(绝大多数标准服务都满足),就能原生生效。











