我正在尝试在用户登录时启动 systemd 用户服务。但我的服务在启动时继续启动,并在我注销后继续运行。我使用的是 Linux Mint 21.2。这是我到目前为止所做的。
/usr/lib/systemd/user/mpd.service
创建包含以下内容的单元文件
[单元] 描述=音乐播放器守护进程 [服务] ExecStart=/usr/bin/mpd --no-daemon [安装] WantedBy=default.target
- 启用与
sudo systemctl --global enable mpd.service
- 重新加载守护进程
systemctl --user daemon-reload
- 注销并重新登录。什么也没有开始。
- 重新启动,服务启动。我注销后,该服务仍然继续运行。
这里有一个类似的问题。但我没有得到答案中描述的行为。
根据您链接的项目,您需要
sudo systemctl --user enable mpd.service
代替--global
.这个想法是,当您使用
--user
启用时,您仅为该用户启用此功能。--global
意味着您正在为所有用户启用。您可能已经为您的帐户激活了登录的“逗留模式”。这将整个用户服务管理器从会话绑定转变为永久的。查看一下
/var/lib/systemd/linger
是否是这种情况。另一种可能性是您有一个 SSH 连接处于活动状态,或者(在某些发行版中)有一个 Cron 作业正在运行;这些也可能被设置为“会话”。
对于 PulseAudio/PipeWire,这应该不是问题,因为它们会在您注销时放弃音频输出,因此 mpd 应该暂停但可以继续运行。
还有其他与您的图形环境直接关联的 .targets,您可以使用它们来代替“default.target”,尽管没有通用的。