前言:我不是百分之百熟悉systemd和单元文件的概念,但我做了一些阅读。
上下文:我想将一个进程从一个cgroup树移动到另一个cgroup树,在发行版运行systemd和(非systemd让我们说新贵)。更具体地说,cgroup树看起来像这样。
基本上层次结构相对于my_root看起来像这样
my_root
|
______ ___________
| |
d11 d12
(P lives here) |
___________
| |
d21 d22
然后P在d21或者下移动
my_root
|
______ ___________
| |
d11 d12
|
___________
| |
d21 d22
(P lives here now)
为了完整起见,我们可以说
my_root = /sys/fs/cgroups/cpu,cpuacct/my_root
让我们谈谈非systemd斗:如果我在不运行systemd一个发行版上运行我可以回应的PID P1
到cgroups.procs
的d21
,然后它会我的过程移动到该cgroup中。
现在是systemd
用例,这就是我不确定的让我说我做的事与上面做的一样,有两件事可能发生。
- 这个过程在那里移动并停留在那里。
- 该进程最初在那里移动,但是在某个时间之后它返回或转到该特定控制器的根cgroup。
我想避免后者。基本上我在想,当我为我的应用程序指定单元文件时,我想获取启动应用程序的my_root
cgroup的所有权,例如应用程序获得cgroup的所有权,因此systemd不会干扰进程移动。
现在到多部分问题。
- systemd真的会从我移动它的cgroup中移开进程吗?
- 如果是,那么我需要做什么才能获得单元文件中cgroup的所有权。我正在寻找单元文件的一些具体示例。
资源:https://www.freedesktop.org/wiki/Software/systemd/ControlGroupInterface/