什么是 systemd 范围?

ten*_*ohn 3 systemd

我只是想知道什么是范围。然而,这(https://www.freedesktop.org/wiki/Software/systemd/ControlGroupInterface/)是一个很好的总结,同时对我来说有点困惑。

部分文章:

“服务、范围和切片可以由管理员自由创建,也可以由程序动态创建。”

  • 使用自定义范围有什么好处,目的是什么?
  • 创建范围(无需编程)的唯一方法是 systemd-run --scope?

fil*_*den 5

我之前在该主题上发布了这个答案,看看是否为您解答。

简而言之,作用域是为进程树创建 cgroup 的一种方式,而 systemd 不是产生进程本身的那个(因为它总是为服务单元做的)。

Usingsystemd-run --scope是启动新范围的一个很好的例子(进程本身将由 启动systemd-run,而不是由 systemd PID 1启动。)

使用自定义范围有什么好处,目的是什么?

从隔离的角度来看,类似于运行一个服务。您可以对特定进程组的 CPU、内存等资源进行记账和限制。

使用服务以外的范围的好处是您可以从当前环境启动进程,而不必通过系统管理器启动它。特别是,这允许您在连接到本地上下文的范围内运行进程,例如 X11 服务器、SSH 连接或访问 ssh-agent 等。您可以移动任何进程(甚至是现有进程) ) 到您创建的范围,而服务将始终启动新进程,并且通常具有经过消毒的环境。

创建范围(无需编程)的唯一方法是systemd-run --scope?

还有其他方法可以启动范围。例如,使用该busctl工具是一种可能性,但很难判断您是否将其视为“编程”...但这将允许您将现有流程移动到新创建的范围,这systemd-run可以'自己做。

我希望你发现这些指针有帮助。

  • 一个更实际的例子:你可以运行`systemd-run --scope -p MemoryLimit=1G firefox`,但你不能运行`systemd-run -p MemoryLimit=1G firefox`。或者更确切地说,您可以,但 Firefox 不会找到 DISPLAY 变量 *(在 X11 上运行时)* 并失败。 (2认同)