如何在 /proc/ 中获取进程 cgroup 的时间片/cgroups?

如何在 /proc/ 中获取进程 cgroup 的时间片/cgroups?

为了解决将进程放入错误 cgroup 的 cgroup 问题,有人建议我/proc/process-id/cgroups在进程运行的一段时间内定期对文件进行快照。这样做的目的是识别进程并检查其分配的 cgroup 是否正确和/或是否随时间发生变化。

有谁知道有什么工具可以捕获此类信息吗?我知道,/proc由于其性质,简单的“tar”操作不是一种选择。

答案1

即使它是虚拟的,它也只是一个文本文件:

grep . /proc/[0-9]*/cgroup | sort -V > snapshot.txt

这不会包含进程名称(仅包含 PID),但如果您尝试观察长时间运行的进程,那么这可能就足够了,而且从 /proc/…/exe 或 /proc/…/cmdline 获取命令也很容易。您可以如果您仔细指定了要包含的内容,甚至可能是“tar”/proc。


或者,如果您想要树形输出(包含进程名称和所有内容):

systemd-cgls

(在 cgroup v2 系统上最佳。在 cgroup v1 上,systemd-cgls 仅捕获“name=systemd”,而不捕获其他控制器。)

相关内容