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,因此这将使我的桌面更易于理解和管理。