故障排除

故障排除

某些原因偶尔会导致挂起崩溃。当系统崩溃时,系统会冻结并显示黑屏,然后保持开启状态,而不会挂起。这让我不得不按住电源按钮直到系统关闭。

我与大多数人的设置不同之处在于,我不使用在笔记本电脑盖关闭时暂停的选项。因此打开和关闭笔记本电脑盖没有任何操作。我喜欢手动按下暂停键。这种偏好变化可能是原因吗?

由于崩溃没有显示错误,我该如何开始寻找导致崩溃的原因?

答案1

我认为您提到的设置没有相关。

故障排除

与暂停相关的错误消息通常会出现在其中, /var/log/pm-suspend.log因此请查看那里。

典型原因

这些问题通常是由于某些进程阻止系统暂停而引起的。

dmesg -T|grep Freez -A4

并查找以下条目:

--
[sun mar  3 15:19:48 2013] Freezing user space processes ... 
[sun mar  3 15:20:08 2013] Freezing of tasks failed after 20.01 seconds (3 tasks refusing to freeze, wq_busy=0):
[sun mar  3 15:20:08 2013] mount.nfs       D e8631aa0     0  5518   5517 0x00800004
[sun mar  3 15:20:08 2013]  e8631b10 00000086 f7bc0e00 e8631aa0 c1053cb4 c1809020 c192ee00 c192ee00
--

检查时间戳,查看哪些报告的问题与您尝试暂停有关。在这种情况下,正是它mount.nfs导致了问题。

建议的解决方法

在暂停之前自动运行一个脚本,并让脚本终止有问题的进程:

用户可以在/etc/pm/sleep.d/目录中提供脚本。这些脚本将在系统挂起和恢复时运行。文件名应以顺序号开头。00-49 用于用户脚本。有关详细信息,请参阅man pm-suspend

该脚本可能如下所示:

#!/bin/sh
(killall -9 mount.nfs; exit 0)

...如果有的话,则包含导致问题的其他进程的对应条目。

括号和exit 0是一个技巧:如果找不到进程,killall将以错误退出代码退出,从而取消整个挂起。括号将使killall子 shell 中的运行以退出代码退出0,无论killall退出代码是什么。

如果您遇到问题,请检查,/var/log/pm-suspend.log因为它还会记录与运行脚本相关的问题/etc/pm/sleep.d/

答案2

不,禁用“合上盖子时暂停”功能不会影响手动暂停。

您首先需要查看 的输出和dmesg的内容来寻找线索。/var/log/kern.log/var/log/syslog

如果您与我们分享这些信息,我们可以尽力提供帮助。请参阅此问题以了解如何操作:

如何轻松地与他人共享命令或文本文件的输出?

相关内容