一段时间以来,当我在两个用户会话之间切换时,不活动的会话在某些情况下会停止执行 GUI 进程。这样,我就不得不等待另一个会话加载,而无法在另一个会话中执行某些操作,因为如果我切换并在一段时间后返回,它仍然在同一点。受影响的软件包括 rsync、rdiff-backup、KDE 后台进程、在 Openbox 会话中启动的 Steam(甚至下载停止)以及至少一些游戏。VLC 不受影响,至少在我切换回来后它会跳到所需的时间,但有一会儿我可以在它的窗口中看到旧的帧和时间。
哪个过程导致了这种行为?我能以某种方式重新配置它吗?
更新:内存和交换使用情况
一些额外的背景信息:具有讽刺意味的是,我在旧的 brainstorm.ubuntu.com(现已不存在)上建议了这种确切的行为。
答案1
我也遇到了这个问题,因为我经常在控制台和图形虚拟终端之间切换。Xorg 的设计会在 VT 切换期间暂停其客户端,这就是为什么当 Xorg 的 VT 不再处于活动状态时,其客户端似乎会“冻结”。Wayland 则不会,因此如果您需要在后台 VT 中保持运行的程序支持新的显示协议,请使用 Wayland 合成器而不是 Xorg。
解决此问题的一种方法是在本地 VNC 服务器上运行图形程序,这样它们就不会被挂起。这是我最常用的解决方法。
答案2
什么过程导致了这种行为?
显示管理器 (DM) 就是您要找的。任何人:lightdm
、、gdm
(kdm
旧 kde)、sddm
(新 kde)、xdm
...
我可以以某种方式重新配置它吗?
据我所知,X 服务器应该是这样的。但是,我过去常常使用以下方法跳过该行为:
- 另一个虚拟控制台 TTY 上的 CLI 工具
- CLI 工具即
init
服务
关于音频流,当我在 2006 年开始使用 GNU/Linux 时。音频设备与显示器分开管理。现在,情况发生了很大变化,特别是随着 HDMI 等新集成设备/端口的出现。因此,Pulse 服务器应该知道一些 X 显示事件。据我记得(我会重新检查这一点),Pulse 服务器作为用户进程运行。
答案3
您可以screen
使用 bash 从 CLI 启动会话,并在此会话中启动应用程序。现在您可以毫无问题地关闭此终端并使用screen -r
命令恢复。大致如下:
screen bash
rsync -V xxx yyy
然后你可以关闭 CLI 并返回你想要的任何内容并执行以下操作:
screen -r
确认工作已完成。我不知道这是否可以与 GUI 应用程序一起使用,使用以下命令:
nohup your-X-application &