![在系统启动时而不是在用户登录时启动 systemd 用户服务](https://linux22.com/image/172982/%E5%9C%A8%E7%B3%BB%E7%BB%9F%E5%90%AF%E5%8A%A8%E6%97%B6%E8%80%8C%E4%B8%8D%E6%98%AF%E5%9C%A8%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95%E6%97%B6%E5%90%AF%E5%8A%A8%20systemd%20%E7%94%A8%E6%88%B7%E6%9C%8D%E5%8A%A1.png)
给定 UID 1000 的服务定义~/.config/systemd/user/do-something.service
,该服务会自动安装、启用和启动登录时,我想do-something.service
开始在系统启动时反而。
一种可能的解决方案是[email protected]
作为系统的依赖项进行安装multi-user.target
,但问题是这是否是推荐的设置以及它的缺点是什么。
答案1
据我了解ArchWiki 上的 systemd/User 条目,在启动时启动用户管理器是由 systemd-logind 处理的。对于当前用户:
loginctl enable-linger
对于不同的USER
(用户名或 ID):
sudo loginctl enable-linger USER
从手册页:
如果为特定用户启用,则会在启动时为该用户生成用户管理器,并在注销后保留。这允许未登录的用户运行长时间运行的服务。