为什么在桌面会话(例如 GNOME)中使用 systemd 用户管理器?

为什么在桌面会话(例如 GNOME)中使用 systemd 用户管理器?

GNOME 等桌面已将进程从每会话范围移至每用户 systemd 管理器 ( systemd --user)。这包括 GUI 应用程序,例如 GNOME 终端。

GNOME 使用 systemd 用户管理器来实现什么目的?有我可以阅读的理由吗?


GNOME 似乎将会话的环境变量复制到用户管理器中。请注意,GNOME 不支持用户同时登录多次。这些环境变量有意或无意地包括 XDG_SESSION_ID。

loginctl,如loginctl lock-session最终被修改以支持第二个定义不太明确的会话概念

我很好奇是什么促使人们创造出这种奇怪的现象。

答案1

这样做有很多好处,但最主要的好处是将每个应用程序放置在自己的内核 cgroup 中。这使得 gnome-shell 能够更可靠地进行应用程序匹配,并且可以使用资源控制(例如)说 Epiphany 仅获得 20% 的系统 RAM。

此外,这为应用程序沙箱奠定了一些基础基础。

https://wiki.gnome.org/ThreePointThirteen/Features/SystemdUserSession

我可以理解 GNOME 对 CGroup 感兴趣。 Systemd 为此提供了一个现有框架。

我没有找到任何理由凯德Plasma 在我的搜索中就是这么做的。我最接近的是

到目前为止,我的想法是 Wayland shell 上的 Plasma 需要由 systemd 启动。特别是我考虑使用套接字激活来启动 KWin 会话合成器。

https://plus.google.com/+MartinGr%C3%A4%C3%9Flin/posts/GMtZrNCeaLD

但没有解释为什么当 Plasma 会话必不可少时,套接字激活 KWin 才有意义。


我还没有研究为什么 systemd 被杀死systemd --session并被systemd --user纳入pam_systemd.也许原则上每个会话实例会是一个更干净的系统,但我不确定。我认为有一些实际原因使它不那么有吸引力。

答案2

有一个更新的解释。报告的好处包括:

  • 允许某些事情仅在需要时启动,例如 XWayland 或智能卡服务
  • 将资源约束应用到内存和 CPU 到服务。

对于已经熟悉 systemd 的人来说,这意味着一种更加标准化和一致的方式来执行启动、停止和禁用服务、为应用程序设置环境变量以及查看和管理特定服务的日志等操作。

就我个人而言,我之前并不熟悉所有 Gnome 会话部分的管理方式,但我熟悉 systemd,因此这将使我的桌面更易于理解和管理。

相关内容