系统守护进程延续
杀死进程 系统守护进程(systemd)最具争议的功能之一是当用户注销时,杀死用户进程的选项。最初,这也杀死了 screen/tmux/nohup 进程。在最近的 Debian 发行版中,systemd-logind(systemd 的登录管理器)的默认配置是允许进程继续运行,配置文件 /etc/systemd/logind.conf 中有一个选项 KillUserProcesses,可以启用它以杀死用户进程。如果这样做,那么有选项仅杀死某些用户的进程,并排除某些用户(默认排除 root)。如果使用该选项,您显然可以使用 systemd 单元启动 screen,从而防止在注销时被杀死。这对于某些特定用户案例来说是一个非常方便的功能。有一个情况是,我在支持一些不太擅长电脑的人使用运行 KDE 的系统时,有一些 KDE 进程会持续存在。因此,注销并重新登录以处理 akonadi 或其他某个 KDE 服务不正常的问题并不起作用。在那个系统上,我启用了杀死用户进程的选项,这减少了他们遇到的问题,而不需要重启。人们普遍认为,“延续”特性是让 screen/tmux/nohup 工作所必需的,但在 Debian(很可能大多数发行版)中并非如此。某些配置的组合可能需要“延续”才能让 screen/tmux 工作,但我对此并不感兴趣。在我直接支持的 Linux 桌面用户中(人数在几百人),没有一个人具备使用 screen/tmux 的能力,并且他们的无知让我想在注销时自动杀死他们的进程。 控制延续 如果安装了 polkit,并且是典型配置,您可以使用以下命令为自己的帐户启用和禁用“延续”: loginctl enable-linger loginctl disable-linger 如果以 root 身份运行,您可以使用以下命令为其他用户启用和禁用它: loginctl enable-linger $ACCOUNT loginctl disable-linger $ACCOUNT 似乎没有任何文档化的方法来发现一个帐户是否启用了延续,或者列出启用了延续的帐户,似乎 “ls /var/lib/systemd/linger” 是唯一的选择。 Debian 上的延续 在设置几乎默认的 Debian 系统上,注销时进程不会被杀死,“延续” 产生的唯一区别是在用户登录之前以用户的上下文启动程序。最近,我的一个朋友在我的服务器上测试一堆 LLM 程序,他使用的帐户最终启用了“延续”,可以推测他运行的安装脚本假设启用延续对于 nohup 的工作是必要的,因此自动启用了这个选项,未经请求。我发现这种行为的一个好处是在我的笔记本电脑上。目前,我在我的笔记本电脑上测试新的 SE Linux 策略,并且频繁重启。当我在我的账户上启用延续时,它使笔记本电脑在启动时连接到 wifi,而无需登录,这非常方便。我可以在 X11/Wayland 登录配置损坏时仍然 ssh 进入它。我将在完成这些测试后保持启用。拥有像 Pipewire 和 Bluetooth 这样的后台进程在我登录之前启动,显然会使我登录时的速度稍微快一些。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡