我已经启用并启动了用户服务(systemctl --user enable serviceName
...等)。但是当我注销时,服务停止了。为什么?我之前在 Fedora 22 上创建过类似的用户服务,但是当我注销时它并没有停止。有没有什么解决方法?
答案1
可能更好:
systemd 用户实例在用户首次登录后启动,在用户最后一个会话关闭后终止。有时在启动后立即启动它,并在最后一个会话关闭后保持 systemd 用户实例运行可能会很有用,例如让某些用户进程在没有任何打开的会话的情况下运行。Lingering 就是为此目的而使用的。使用以下命令为特定用户启用 lingering:
# loginctl enable-linger username
答案2
Systemd 用户服务仅在用户会话期间有效。这意味着您必须登录才能成功运行用户服务。
在 Ubuntu 中,当您退出 X 和所有终端(TTY、本地和远程)时,您的会话结束。我假设 Fedora 为您保留了一个打开的用户会话。
对于 Ubuntu,我建议您创建一个系统级服务,然后告诉它以特定用户身份运行。您可以通过在文件的部分中设置User=
和来执行此操作。如果您只想对该用户帐户拥有写访问权限,我建议您设置适当的文件权限。Group=
[Service]
最后,如果你想让服务只在用户告诉它时启动,你可以使用说明摘自这篇 AU 帖子。