![如何在不丢失任何打开的窗口的情况下重新启动 Ubuntu 中冻结的屏幕?](https://linux22.com/image/1356715/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%8D%E4%B8%A2%E5%A4%B1%E4%BB%BB%E4%BD%95%E6%89%93%E5%BC%80%E7%9A%84%E7%AA%97%E5%8F%A3%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8%20Ubuntu%20%E4%B8%AD%E5%86%BB%E7%BB%93%E7%9A%84%E5%B1%8F%E5%B9%95%EF%BC%9F.png)
我的一台运行 Ubuntu 12.04 LTS 的设备屏幕冻结了。通常我只需跳转到可用的 tty,即Ctrl- Alt-F1并执行命令/etc/init.d/lightdm restart
或service lightdm restart
。但这会杀死我打开的所有内容。我该如何避免这种情况?
答案1
免责声明:根据 Brenden 的评论,这可能已经过时,并且不再适用于较新版本的 Ubuntu。另外,请做好准备,您可能会丢失打开的窗口。
现在我为 Unity 得到了它(我刚刚用 unity 替换了我的 GNOME shell,无需注销或关闭窗口):
- 转到 tty1 [Ctrl]+[Alt]+[F1]
- 输入
DISPLAY=:0
以便程序知道在哪个端口上找到 X-Server export DISPLAY
unity --replace
或者gnome-shell --replace
(您也可以用 unity 替换 GNOME-Shell 或用 GNOME-Shell 替换 Unity)
仅当 X-Server 或 GNOME 没有冻结,而 Unity 或 GNOME-Shell 冻结时,此功能才有效。
工作原理:程序与 X-Server 之间通过网络套接字进行通信以显示其 UI。这通常是在“localhost:0”短“:0”。通过设置 DISPLAY 变量,程序知道在哪里可以找到 X-Server 并与其进行通信,因此即使程序在 tty1 上运行,程序也会显示在 tty7 上的 X-Server 上。
窗口的内容由 X-Server 管理,而窗口的位置和边框由 Unity 或 GNOM-shell 中集成的窗口管理器管理,因此可以只替换它们,而无需重新启动 X-Server 上的应用程序。
附言:我只是描述我的理解,所以如果我在某些地方有误,请编辑并纠正我。
编辑:
对于 GNOME-Shell,还有另一种方法可以重新启动它。切换到 tty 后,只需输入pkill -HUP gnome-shell
,我不知道 Unity 是否有类似的功能。
答案2
如果你的屏幕冻结了,但鼠标仍在移动(但左键单击没有结果) - 尝试
- 关闭可疑(锁定过多内存)的应用程序;
您可以使用键盘 alt-tab 选择,使用 alt-f4 关闭。
- 右键单击任意位置。
不知道为什么会发生这种情况以及为什么右键单击有效,但至少它有效。