如何防止非活动用户会话中的自动暂停进程?

如何防止非活动用户会话中的自动暂停进程?

一段时间以来,当我在两个用户会话之间切换时,不活动的会话在某些情况下会停止执行 GUI 进程。这样,我就不得不等待另一个会话加载,而无法在另一个会话中执行某些操作,因为如果我切换并在一段时间后返回,它仍然在同一点。受影响的软件包括 rsync、rdiff-backup、KDE ​​后台进程、在 Openbox 会话中启动的 Steam(甚至下载停止)以及至少一些游戏。VLC 不受影响,至少在我切换回来后它会跳到所需的时间,但有一会儿我可以在它的窗口中看到旧的帧和时间。

哪个过程导致了这种行为?我能以某种方式重新配置它吗?

更新:内存和交换使用情况

一些额外的背景信息:具有讽刺意味的是,我在旧的 brainstorm.ubuntu.com(现已不存在)上建议了这种确切的行为。

答案1

我也遇到了这个问题,因为我经常在控制台和图形虚拟终端之间切换。Xorg 的设计会在 VT 切换期间暂停其客户端,这就是为什么当 Xorg 的 VT 不再处于活动状态时,其客户端似乎会“冻结”。Wayland 则不会,因此如果您需要在后台 VT 中保持运行的程序支持新的显示协议,请使用 Wayland 合成器而不是 Xorg。

解决此问题的一种方法是在本地 VNC 服务器上运行图形程序,这样它们就不会被挂起。这是我最常用的解决方法。

答案2

什么过程导致了这种行为?

显示管理器 (DM) 就是您要找的。任何人:lightdm、、gdmkdm旧 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 &

相关内容