我的 Ubuntu 上有 KDE,并且安装了 XRDP。我已经startkde
安装了.xsession
,但我无法远程登录,除非我先从中注销。
反之亦然。如果我注销然后使用 XRDP 连接,我将无法本地登录...
有什么方法可以让我保持登录状态并以同一用户身份进行远程登录?
- 编辑 -
我有一个用户始终登录我的 NUC,并且全天候运行着一堆我需要运行的应用程序。如果我将该用户设置为 15 分钟后注销(屏幕锁定),我将无法访问我的应用程序(特别是 QBitTorrent Web UI)。
我还想远程登录我的 NUC,因此我设置了 OpenVPN,并尝试使用 XRDP 登录。例如,我当然可以访问 QBitTorrent Web UI,但有时我想安装更多应用程序。
我的问题是我无法使用 XRDP 登录,因为用户一直在登录并运行。删除会话也会使我的应用程序在我从 XRDP 注销后不可用,不是吗?
答案1
您还没有提到 systemd linger 设置,更准确地说是 logind,所以这可能会有所帮助。
对于您的用例来说,将它们作为 systemd 服务在用户或系统级别运行听起来很合适,而不需要会话(作为用户登录环境和进程命名空间)。
为您的服务编写服务文件!
看
- https://www.shubhamdipt.com/blog/how-to-create-a-systemd-service-in-linux/ 或提供更多解释
- https://www.shellhacks.com/systemd-service-file-example/ 以及许多其他有关如何编写服务文件的 stackexchange 问题。这是一项必不可少的技能,随着时间的推移会变得越来越容易。
独立于会话状态(登录/注销)运行用户进程(服务*?)
从man loginctl
:
enable-linger [USER...], disable-linger [USER...]
Enable/disable user lingering for one or more users. If enabled for a specific user, a user manager is
spawned for the user at boot and kept around after logouts. This allows users who are not logged in to run
long-running services. Takes one or more user names or numeric UIDs as argument. If no argument is specified,
enables/disables lingering for the user of the session of the caller.
See also KillUserProcesses= setting in logind.conf(5).
在以这种方式启动的 systemd 服务上,ArchWiki 警告:
Warning: systemd services are not sessions, they run outside of logind. Do not use lingering to enable automatic login as it will break the session.
它还谈到在注销时终止用户进程:这会如何破坏 tmux/screen,它应该以不同的方式运行,并且[email protected]
当所有用户会话都注销时将被终止,除非启用了延迟。
运行多个会话
发现一些迹象:
- https://askubuntu.com/questions/950595/multiple-parallel-sessions-as-a-single-user(我今天正在寻找的功能,以便并行尝试新的 WM)
- https://askubuntu.com/questions/950535/what-are-parallel-sessions
它们是双向链接的。
有关远程登录解决方案以及与 loginctl 的关系的更多信息: