在系统启动时而不是在用户登录时启动 systemd 用户服务

Ami*_*mir 7 systemd systemd-boot systemd-user

给定 UID 1000 的服务定义~/.config/systemd/user/do-something.service,该服务在登录时自动安装、启用和启动,我希望在系统启动do-something.service时启动。

\n

一种可能的解决方案是user@1000.service作为 system\xe2\x80\x99s 的依赖项进行安装multi-user.target,但问题是这是否是推荐的设置以及它的缺点是什么。

\n

Ami*_*mir 9

正如我从ArchWiki 上的 systemd/User 条目中了解到的那样,在启动时启动用户管理器是由 systemd-logind 处理的。对于当前用户:

loginctl enable-linger
Run Code Online (Sandbox Code Playgroud)

对于不同的USER(用户名或 ID):

sudo loginctl enable-linger USER
Run Code Online (Sandbox Code Playgroud)

从手册页:

如果为特定用户启用,则会在启动时为该用户生成用户管理器,并在注销后保留。这允许未登录的用户运行长时间运行的服务。