我正在尝试学习 cgroups-v2 并练习它。cgroups-v2 文档声明输入 pid 是将程序添加到 cgroups-v2 的唯一方法。还有其他方法可以将程序的可执行文件添加到 cgroups-v2 中吗?
即而不是这样做:
echo "34578" > /sys/fs/cgroup/Example/tasks/cgroup.procs
我可以对可执行文件执行此操作,例如:
echo "/usr/bin/firefox/firefox > /sys/fs/cgroup/Example/tasks/cgroup.procs
我是否每次都必须知道程序的pid是多少才能控制其资源? (我还发现类似的事情可以通过系统运行在systemd 运行解决方案但是,由于我尝试学习 cgroups-v2,所以它超出了主题)。
答案1
是的,你需要知道PID。
例如,您可以/bin/sh
运行 20 个不同的进程,并且它们需要位于不同的 cgroup 中。因此,在可执行文件之间划分实际上没有什么意义!
然而,找出只运行一次的程序的 PID 很容易:
pidof firefox > /sys/fs/cgroup/Example/tasks/cgroup.procs
会做你说你想做的事。不过,这是否是您所需要的还是值得怀疑的,因为 Firefox(和其他类似的浏览器)确实会产生多个进程。