恢复卡住的 X11 服务器,同时保持 GUI 应用程序运行

恢复卡住的 X11 服务器,同时保持 GUI 应用程序运行

我已经运行一个 X 服务器好几天了。今天,由于一些暂时的故障,它挂了。许多 X 应用程序(文本编辑器、Web 浏览器、图形应用程序等)仍在运行,可能一切正常。X 服务器似乎出了问题。

我可以在另一个虚拟终端中启动新的 x 服务器 - ctrl-alt-F1、ctrl-alt-F2 等。原始死机位于 ctrl-alt-F1 上,如果它可以执行任何操作,则会报告 DISPLAY=:0。我使用 ctrl-alt-F2 启动了新的服务器,其中 DISPLAY=:1 和 ctrl-alt-F3 启动了新的服务器,其中 DISPLAY=:2。

直到今天发生这件事,我才知道 Linux 可以同时运行多个 X 服务器,并将它们与 vterms 关联起来。以前,X 服务器总是 F7,多年前是 F5。我使用的是 Arch Linux,大约一个月前刚刚安装。我不太关注 X11 或 Linux 新闻。

问题:原始 F1 服务器仅显示带有光标的黑屏。光标会移动。但我确信,在“ps aux”中显示并在 GUI 之外显示其他生命迹象的应用程序仍在运行。

问题:有没有办法启动 F1 X11 服务器,唤醒它,让它脱离困境,重新启动,让它再次工作?当然,不会丢失现有的 GUI 进程。

如果没有,我的下一个问题是如何将正在运行的进程(如 GIMP、Kwrite 等)从 DISPLAY=:0 X 服务器上移到 :2 服务器上完全存在并正常运行。但这是一个单独的问题,其他地方也问过。不过,在我尝试解决这个问题之前,我想看看我是否可以恢复原始 X 服务器。

答案1

如果您的 X 服务器卡住了,您就无能为力了。您唯一的办法就是关闭应用程序,希望导致它卡住的应用程序(例如卡在无限循环中占用服务器的 3D 游戏)释放资源并重新开始工作。如果您使用合成管理器,也可能是它,因此您可以将其关闭并重新启动,看看是否有帮助(大多数现代 DE 都有帮助,如果您使用 Gnome,则关闭 shell 将终止您的整个会话)。但是,除非您想使用 gdb 深入研究它(如果可以的话,您不会在这里问这个问题),否则服务器很可能无法恢复。

转到下一个问题,我很确定也无法将应用程序从一个 X 服务器移动到另一个 X 服务器:

  • GUI 应用程序通常不仅仅与 X 服务器连接。它们可能还连接了其他多种资源,包括一些与显卡绑定的资源。例如:OpenGL 上下文。您正尝试将应用程序从两个本地服务器移动,但 X11 实际上是一种网络协议。目标 X 服务器也可能位于地球的另一端,具有不同的硬件和所有东西。

  • 大多数应用程序都不会考虑丢失与 X 服务器的连接。我还没有发现任何应用程序能够处理丢失的服务器连接:大多数应用程序只是崩溃了。

  • 将应用程序从一个 X 服务器移动到另一个服务器会破坏应用程序在启动时所做的许多假设,尤其是关于它们可用的内容(OpenGL 版本、X 版本、扩展)。处理所有这些边缘情况是不值得的。

  • Xorg 不会崩溃,就像应用程序不会想到内核会死亡或崩溃一样。

实际上,有一些方法可以将窗口从一个 X 服务器移动到另一个 X 服务器,但它需要使用 X11 代理,如西德克萨斯。这是我能找到的唯一一款,自 2004 年以来没有更新过,而且存在一些问题。我不会指望它能完成真正的工作。

终止 Xorg 并重新启动可能是最好的解决方案。只需记住经常保存您的工作!

相关内容