2.4. 获得关于控制群组的信息
使用
systemctl 指令将系统单位列表并检查它们的状态。systemd-cgls 指令可以检查控制群组的层级,systemd-cgtop 可以监控控制群组的实时资源消耗。
2.4.1. 将单位列表 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
使用下列指令将系统中所有被激活单位列表:
systemctl list-units
systemctl list-units
list-units 是默认执行选项,也就是说,即便您遗漏了此选项,也不会影响结果:
以上所列结果包含四项:
- UNIT —— 单位名称,也反映单位在 cgroup 树中的位置。 如〈“systemd 的单位类型”一节〉所述,有三种单位类型与资源控制相关:slice、scope 和 service。关于
systemd的单位类型介绍,请参阅《Red Hat Enterprise Linux 7 系统管理员指南 · 使用 systemd 管理 service 》。 - LOAD —— 显示单位配置文件是否被正确装载。如果装载失败,文件会包含 error 而不是 loaded。其它单位装载状态有:stub、merged 和 masked。
- ACTIVE —— 高级单位的激活状态,是 SUB 的一般化。
- SUB —— 低级单位的激活状态。可能值的范围取决于单位类型。
- DESCRIPTION —— 描述单位内容和性能。
默认情况下,
systemctl 只会列出被激活的单位(依据 ACTIVE 域中的高级激活状态)。使用 --all 选项可以查看未被激活的单位。如要限制结果列表中的信息量,请使用 --type (-t) 参数,此参数需要单位类型的逗号分隔列表,如:service 和 slice 或者单位装载状态,如:loaded 和 masked。
例 2.7. 使用 systemctl list-units
如要查看系统使用的全部 slice 列表,请输入:
systemctl -t slice
~]$ systemctl -t slice
如要将全部被激活的已屏蔽 service 列表,请输入:
systemctl -t service,masked
~]$ systemctl -t service,masked
对您系统中安装的单位文件及其状态列表,请输入:
systemctl list-unit-files
systemctl list-unit-files
2.4.2. 查看控制群组的层级 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
上述指令不会超越单位水平来显示 cgroup 中运行的真正进程。
systemctl 结果也不会显示单位的层级。您可以使用 systemd-cgls 指令,根据 cgroup 将运行的进程分组来同时实现两者。 要显示您系统中的全部 cgroup 层级,请输入:
systemd-cgls
systemd-cgls
当
systemd-cgls 不带参数发布,它会返回整体 cgroup 层级。cgroup 树的最高层由 slice 构成,外观如下:
请注意,只有当您运行了虚拟机或者容器的时候,机器 slice 才会出现。更多关于 cgroup 树的信息,请参阅〈“systemd 的单位类型”一节〉。
如要减少
systemd-cgls 的输出并查看层级的特定一部分,请执行:
systemd-cgls name
systemd-cgls name
请用您希望检查的资源管控器的名字替换 name。
或者,使用
systemctl status 来显示系统单位的详细信息。cgroup 的子树是此指令结果的一部分。
systemctl status name
systemctl status name
例 2.8. 查看控制群组的层级
如要查看
memory 资源管控器的 cgroup 树,请执行:
以上指令的结果将列出与所选管控器互动的 service。另一种方法是查看 cgroup 树的一部分来查阅 service、slice 或者 scope 单位:
除了上述工具,systemd 也提供了专门监控 Linux 的
machinectl 指令。
2.4.3. 查看资源管控器 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
上述的
systemctl 指令可以监控高级单位层级,但是不能显示 Linux kernel 的资源管控器被哪项进程使用。这些信息存储在专门的进程文件中,如要查阅这些文件,请以 root 身份输入:
cat proc/PID/cgroup
cat proc/PID/cgroup
PID 代表您希望查看的进程 ID。默认情况下,此列表对所有 systemd 启动的单位一致,因为它自动挂载所有默认管控器。请参考下列示例:
通过检查此文件,您可以确定进程是否被放置在 systemd 单位文件规范所定义的所需 cgroup 中。
2.4.4. 监控资源消耗量 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
systemd-cgls 指令给 cgroup 层级提供了静态数据快照。要查看按资源使用量(CPU、内存和 IO)排序的、正在运行的 cgroup 动态描述请使用:
systemd-cgtop
systemd-cgtop
systemd-cgtop 提供的统计数据和控制选项与 top 实用工具所提供的相近。更多信息,请参阅 systemd-cgtop(1) manual page。