问题描述
我有一台运行Ubuntu 12.04 LTS的设备的屏幕冻结。通常,我只是跳到一个可用的tty,即Ctrl
–Alt
–F1
并执行了命令/etc/init.d/lightdm restart
或service lightdm restart
。但是,这杀死了我打开的所有内容。如何避免这种情况?
最佳方法
免责声明:根据布伦登(Brenden)的评论,这可能已过时,并且不适用于较新版本的Ubuntu。另外,请做好准备,以免丢失打开的窗口。
现在我为Unity买到了它(我只是用Unity替换了我的GNOME shell,而没有注销或关闭Windows):
-
转到tty1 [Ctrl] + [Alt] + [F1]
-
键入
DISPLAY=:0
,以便程序知道在哪个端口上查找X-Server -
export DISPLAY
-
unity --replace
或gnome-shell --replace
(您也可以将GNOME-Shell统一替换为Unity,也可以将GNOME-Shell替换为Unity)
仅当未冻结X-Server或GNOME时,才冻结,而只有Unity或GNOME-Shell才冻结。
工作原理:程序与X-Server之间用于显示其UI的通信正在通过网络套接字进行。这通常是”localhost:0″的简短”:0″。通过设置DISPLAY变量,程序知道在哪里找到与之通信的X-Server,因此即使程序在tty1上运行,程序也显示在tty7的X-Server上。
窗口的内容由X-Server管理,而窗口的位置和边框由集成于一体的窗口管理器或GNOM-shell管理,因此有一种方法可以只替换它们而不重新启动X-Server上的应用程序。
PS:我只是在描述我的理解,因此,如果我在某些方面有误,请编辑并纠正我。
编辑:对于GNOME-Shell,还有另一种重新启动它的方法。更改为tty后,只需键入pkill -HUP gnome-shell
,我不知道Unity是否有类似的东西。