如何调试暂停问题?


11

我曾经在此HP Compaq 610上安装了Fedora 14,并且挂起功能正常运行。现在,我已经安装了Scientific Linux 6.1暂停功能,该功能不再可用。如何调试/修复它?


这是shell挂起(<kbd> Cntl-z </ kbd>)还是OS(睡眠或休眠)?
弓箭2011年

@Arcege:我认为他的意思是ACPI暂停,因为最近这已经成为一个普遍的问题。
JM Becker 2012年

Answers:


9

有许多方法可以处理挂起和休眠功能,许多旧方法已被弃用。这使得寻找解决方案变得困难,因为似乎每个解决方案都与下一个完全无关。照这样说...

http://pm-utils.freedesktop.org/wiki/提倡的当前推荐的方法应该可用于最新发行版。我将首先检查您是否已pm-utils安装,以及所包含的命令是否按预期运行。

查看软件包是否已安装,请在终端中输入此命令

rpm -qa | grep pm-utils

这应该输出您已安装的版本。如果没有获得预期的输出,则需要安装该软件包。

sudo yum install pm-utils

验证通过后,请测试您的挂起能力。

sudo pm-suspend

如果您不暂停,但没有得到任何输出原因,请检查您最近的dmesg输出

dmesg | tail -50

一旦获得一些线索,这应该会帮助您入门,它很容易深入。发回有关您的结果的评论,我可以帮助您解决其他问题。


我什至安装了pm-utils-devel。root用户的pm-suspend与普通用户的操作相同,当它单击GNOME / menu-> suspend-> nothing时,机器只说“网络已关闭”,然后它只是等待,等等。我可以我尝试暂停后什么也没开始。稍后我会看到dmesg,谢谢!
LanceBaynes 2012年

dmesg输出会告诉你发生了什么幕后。更重要的是,特别是失败的地方。O和BTW,您不需要devel软件包。编译代码时只需要它们,因此请清除。从这里可以走很多路,我只是不给你发错树皮而已。
JM Becker 2012年

1
@LanceBaynes您是否尝试pm-suspend从外壳而不是通过GNOME菜单运行命令?echo -n "mem" >/sys/power/state以root身份尝试。另外,如果您正在使用acpi,则可以acpi_listen查看正在生成哪些事件,例如在关闭盖子时。

哇,wtf?我与root用户“ echo -n” mem“> / sys / power / state”,而我实际上已暂停!!!哇。现在唯一的问题是,当我执行这种挂起操作时,gnome-screensaver无法启动,并留下了未锁定的PC。如何解决这个问题?我如何制作脚本/任何东西,以便普通用户也可以使用这种挂起?不仅仅是root用户?-还有一件事:谢谢!
LanceBaynes 2012年

2
@LanceBaynes:现在可以用了吗?...我以前认为这类“惊奇”中断/修复仅发生在Widoze上。不幸的是,我已经停止相信了一段时间。但是...从好的方面来说,它的发生频率降低了!而且您的暂停正在进行中,所以这是个好消息!
JM Becker 2012年


2

如果只想在挂起/恢复系统后才能使用它,则可以尝试以下操作:

cat /var/log/syslog | grep 'systemd-sleep' | grep "Suspending\|resumed";
Feb  7 10:44:23 dmatej-lenovo systemd-sleep[19900]: Suspending system...
Feb  7 10:44:33 dmatej-lenovo systemd-sleep[19900]: System resumed.
Feb  7 10:45:35 dmatej-lenovo systemd-sleep[20707]: Suspending system...
Feb  7 12:58:39 dmatej-lenovo systemd-sleep[20707]: System resumed.
Feb  7 14:42:55 dmatej-lenovo systemd-sleep[24690]: Suspending system...
Feb  7 16:31:57 dmatej-lenovo systemd-sleep[24690]: System resumed.

1

正如Mika所建议的那样,作为根:

PM_DEBUG=true pm-suspend

内的详细信息:

/var/log/pm-suspend.log

在这种情况下,您正在寻找

[...] service [servicename] suspend suspend success

结束,并且

[...] service [servicename] suspend resume success

开始。在两者之间的某个地方,您可能会发现返回错误的呼叫,此时挂起被禁止。在这种情况下,您可能会将挂起的更改回滚。找出导致错误的服务调用,然后在vi中打开并查看它。

我遇到了同样的问题,即xboxdrv在Ubuntu 12.04上安装后,在规则中/etc/pm/sleep.d/进行的调用试图停止从未启动或不存在的服务,在本例中为xboxdrv。事实证明,由于没有/lib/modules/uinput.ko模块,因此永远无法启动它,因为该模块已合并到内核中。/etc/pm/sleep.d/xboxdrv当case与调用的“ suspend”相匹配时,这将导致case语句抛出错误service xboxdrv stop。在该行的前面#绕过该语句,但要付出的代价是必须在挂起时拔出并重新插入控制器,然后再恢复。


运行此命令后,我在调试日志中没有任何错误,但魔术般地它又开始工作了;-)我想知道它是否是永久修复...
Wirone
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.