我使用的是 Parabola(Arch 的一个分支),并且正在运行 XFCE 桌面环境。然而,我会定期遇到这些奇怪的崩溃,整个桌面都会冻结。我无法移动光标(事实上,我什至不能看我的光标),我的机器没有响应任何键盘输入(我什至无法切换到另一个tty),并且基本上只有电源按钮可以工作。但是,与此同时,如果我(例如)在后台播放音乐,那么它会继续播放而不会出现问题。
我完全不确定如何诊断问题的根源。我可以在哪里查找以及我要寻找什么来检测导致此类行为的原因?
答案1
如果您的音乐持续播放超过几秒钟,则意味着系统运行良好,只是 X 服务器被冻结以致无法响应任何控制台输入。 ttys之间的切换需要X服务器的配合,既要处理组合键,又要重置显卡。
如果您有其他方式登录计算机,则可以运行命令并尝试调试问题或至少执行干净关闭。对于大多数人来说,登录计算机的一种方法是从另一台计算机(可能是智能手机——主要智能手机操作系统都有终端模拟器和 SSH 客户端)进行 SSH。
从命令行,您可以尝试chvt 1
以 root 身份运行以切换到不同的文本控制台。但这可能有效,也可能无效,具体取决于 X 服务器正在做什么。如果 X 服务器没有响应,则切换可能会失败,或者您可能会因为文本控制台图形模式设置不正确而导致盲打。
另一件有用的事情是魔法系统请求:按住Alt,按SysRq(可松开),按一个字母助记词,然后松开所有键。这是由内核直接处理的,因此只要内核没有完全锁定,它就会继续工作。如果您没有 SSH 访问权限,请尝试按Alt+ SysRq+R将键盘切换出原始模式,然后按Ctrl+ Alt+F1切换到文本控制台。当键盘不再处于原始模式时,键绑定由内核直接处理,因此这有机会起作用。与运行一样chvt
,实际的 VT 切换可能会受到 X 服务器的损害。
如果您设法获得命令行,您可以将以下一些内容作为第一级调查:
- 运行
htop
或top
并查看哪些进程使 CPU 繁忙。 - 检查
/var/log/Xorg.0.log
、/var/log/kern.log
(或您的发行版保存内核日志的任何地方)或~/.xsession-errors
(或您的会话管理器指示 stdout 和 stderr 的任何地方)中的消息。
如果某个 X 进程占用 100% CPU 时间或与 X 服务器共享,请尝试终止它。 Compiz 是个常犯。
您可以使用++然后++Alt来SysRq终止XK服务器和X会话中的所有进程。这也会使显卡处于不良状态。然后您可以尝试运行新的 X 服务器。它很有可能能够重新初始化显卡。AltSysRqR
导致锁定的常见问题有:
- 有缺陷的 3D 图形驱动程序。 3D 驱动程序比 2D 驱动程序有很多错误(这是可以理解的,因为它们更新、更复杂,而且硬件制造商的支持更差)。尝试减少对 3D 内容的依赖。特别是,避免 compiz。
- 有缺陷的图形驱动程序。如果您使用的是 GPU 的免费驱动程序,请尝试专有驱动程序,反之亦然。尝试更新或旧版本。
- 内存不好。运行一个记忆测试。