某些原因偶尔会导致挂起崩溃。当系统崩溃时,系统会冻结并显示黑屏,然后保持开启状态,而不会挂起。这让我不得不按住电源按钮直到系统关闭。
我与大多数人的设置不同之处在于,我不使用在笔记本电脑盖关闭时暂停的选项。因此打开和关闭笔记本电脑盖没有任何操作。我喜欢手动按下暂停键。这种偏好变化可能是原因吗?
由于崩溃没有显示错误,我该如何开始寻找导致崩溃的原因?
答案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
如果您与我们分享这些信息,我们可以尽力提供帮助。请参阅此问题以了解如何操作: