为什么登录一夜后桌面/显示器屏幕会失效?

为什么登录一夜后桌面/显示器屏幕会失效?

我目前正在运行 Ubuntu 13.10。我在使用 Ubuntu 12.04 时也遇到了同样的问题,因此我认为以下问题与特定版本无关。

我选择使用 Ubuntu 来工作。我希望整晚保持登录状态,这样第二天早上到达时就可以立即恢复工作。不幸的是,第二天到达时,我经常遇到这个问题,任何鼠标移动或键盘输入都会导致屏幕闪烁,我无法输入 gnome-screensaver 的密码。

我尝试进入 tty4,重新启动 unity(在 13.10 中,现在显示“重新启动已弃用”...... 真烦),重新启动 lig​​htdm,重新启动 compiz,随便你怎么说。什么都不起作用。我尝试的所有方法要么没有效果,要么产生一些无用的错误消息,相当于“不行”。我总是被迫从 tty4 进行“sudo 重新启动”,这不是世界末日,但它让我认为 Ubuntu 12.04+ 与 Microsoft 产品一样可靠(我有许多其他理由支持这一观点)。

我已经尝试解决这个问题大约 7 个月了,但毫无进展。之前,我的老板给了我一台烂机器,几乎无法运行 Ubuntu 12.04。我最终认为这个问题是由于在过时的机器上运行现代操作系统造成的。我甚至无法运行虚拟机来测试软件更新,这是我购买新电脑的唯一可行理由。

我终于说服雇主给我买了一台新机器。这台机器有 8G RAM、全新的 1TB HD、四核 3.2ghz i7 等 - 工作起来还不错(注意:没有显卡,但那不重要,因为我只写 Web 开发软件)。我在这台机器上安装了 Ubuntu 13.10。我仍然遇到同样的问题。

我通常只打开 sublime text 2 和 3 个 gnome-terminal 会话,这些会话会在我整夜未关的内部开发服务器上打开。我下班时会锁定屏幕,并使用 gnome-screensaver(默认黑屏)。我查看了调试日志、内核日志、系统日志、xorg 日志、lightdm 日志、apport 日志,甚至故障日志,没有发现任何异常。最多,系统日志会在一夜之间打印出大量以下错误:

<time> <hostname>: whoopsie[<id>]: online
<time> whoopsie[<id>]: last message repeated <2/3> times

在旧的过时机器 (12.04) 上,gnome-screensaver 出现了很多错误,这让我得出结论,在屏幕保护程序出现一些问题后,机器没有足够的视频内存来重新加载桌面(听起来很疯狂,但我不是专家)。在这台新机器上,没有关于 gnome-screensaver 的此类日志,所以我的理论就此打消。

另一个奇怪的是,自从 12.04 发布以来,我一直在家用工作站上使用 Ubuntu,从未遇到过这个问题。我的家用机器在显卡、内存、磁盘空间、优质主板等方面都相当繁重。我目前在家里运行的是 13.04(由于 13.10 中的所有错误,我不敢升级,据说即将推出的 14.04 中也存在这些错误)。如果不是因为我对家用机器的积极体验,我会完全放弃 Ubuntu。无法让我的机器整夜保持登录状态,这让我远离了正版产品。我真的不能再因为有缺陷的操作系统问题而浪费工作时间。我是办公室里选择使用 Linux 的“怪人”,所以人们不喜欢我的技术差异。带有 Gnome 3 的 Fedora / CentOS 现在看起来非常不错。

谁能帮我弄清楚为什么整夜登录会导致屏幕闪烁、外围设备无法使用和环境崩溃?

{ 更新于 2014 年 7 月 17 日 }

之前一直没时间研究这个问题(毕竟这是我的工作机器),但昨晚我让机器开着 gnome-screensaver 过夜,晚上我离开时系统监视器显示内存使用率很低。今天回来时,内存使用量为 1.7G,缓存量为 5.3G,这几乎就是全部。然后我检查了 htop,并按内存使用量对列表进行了排序。

果然,有 5 个 lightdm 进程,每个进程都占用大量内存。输出如下:

  PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
 1078 root       20   0 2880M 2342M 2319M S  0.7 29.6  8:39.44 /usr/bin/X -core :0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
 1117 root       20   0 2880M 2342M 2319M S  0.7 29.6  0:02.92 /usr/bin/X -core :0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
 1118 root       20   0 2880M 2342M 2319M S  0.0 29.6  0:01.33 /usr/bin/X -core :0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
 1119 root       20   0 2880M 2342M 2319M S  0.0 29.6  0:00.74 /usr/bin/X -core :0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
 1120 root       20   0 2880M 2342M 2319M S  0.0 29.6  0:00.00 /usr/bin/X -core :0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
... a few other things with low memory usage follow...

这是正常的吗?我会继续监控,但我感觉这些 lightdm 进程是罪魁祸首,而且它们的总内存使用量高得惊人。有人能进一步解释一下吗(没有双关语的意思)?

答案1

对我(遇到类似问题)来说通常有效的是

killall `pidof Xorg`

尽管这会完全停止 X 服务器并重新启动它

答案2

我家里有一个类似的系统,用作多用途媒体中心、服务器、云等等。

Ubuntu 12.04 LTS,Core i7 CPU,8GB RAM,1TB HDD。每当我不在办公室时,计算机就会被 ctrl + alt + L 锁定,并出现您描述的相同黑屏。

硬盘崩溃了,升级到 120GB SSD,换回 4TB HDD,以换回保修期内的 1TB 硬盘,并在等待更换硬盘时订购了另外 8GB 的​​ RAM 和 SSD。安装了全新的 Ubuntu 14.04,同样的情况:丢失时锁定,没有问题。

我使用 Gnome 3 作为显示管理器,不确定您使用什么。我们之间唯一明显的区别是您的应用程序“Wally”。我建议您完全禁用它,重新启动机器,并等待大约一周或至少几天,然后让我们知道它是否仍在继续。

答案3

升级到 14.04 似乎是解决方案。这台机器已被广泛使用,并且已连续 6 天处于登录状态,并且仍然像刚重启的机器/重新登录的用户一样响应迅速且流畅地运行。我的硬件没有任何变化。我注意到的是,gnome-screensaver 未设置为 14.04 中 unity 的默认屏幕保护操作。该系统在屏幕锁定时管理内存的方式似乎发生了一些变化。不再出现明显的内存泄漏。

lightdm、gmome-screensaver、Xorg、compiz 和 unity 之间的某些部分在 12.* 和 14.04 之间已经进行了足够的更新,我遇到的这个问题已经得到缓解。我还认为没有专用显卡和主板不够好是导致这个问题的适当环境条件的一部分。我的家用机配有一块不错的显卡和速度快得多的主板,从未出现过这个问题,即使使用完全相同的软件级设置。

相关内容