如何查找笔记本唤醒的原因?

如何查找笔记本唤醒的原因?

我的笔记本电脑挂起时遇到问题,但当我不希望它醒来时(要么立即醒来,要么稍后在包里时醒来 - 我可能有两个问题需要解决)。但目前这个问题是关于故障排除的:是否有一个我可以运行的命令来告诉我最后一个resume操作的触发器是什么?例如,是否按下某个键或电源按钮、是否是网络唤醒信号、是否从交流电源切换到电池电源等。

看来在 Windows 上您可以通过键入powercfg -lastwake来找到这一点。所以我正在寻找该命令的 Linux 等效项。

如果没有这样的命令,我需要在哪个日志文件中查找什么?

(Mint 16、xfce、Lenova Thinkpad、内核 3.11.0-12-generic)

答案1

为了完整起见,中提到了另一种解决方案这个答案回答类似的问题。

通过电源按钮唤醒:

$ sudo dmidecode | grep Wake-up
    Wake-up Type: Power Switch

由RTC时钟唤醒:

$ sudo dmidecode | grep Wake-up
    Wake-up Type: APM Timer

通过键盘唤醒:

$ sudo dmidecode | grep Wake-up
    Wake-up Type: PCI PME#

答案2

带有 systemd 的系统

在使用systemd 的系统上,systemd您可以使用该命令查看 systemd 的日志journalctl

例子

在这里,例如,我的系统从盖子关闭开始进入睡眠状态,然后当我打开它时,您会看到与此相关的事件,如下所示:

$ journalctl | less
...
May 19 09:04:47 greeneggs.bubba.net kernel: PM: Syncing filesystems ... done.
May 19 09:04:47 greeneggs.bubba.net kernel: PM: Preparing system for mem sleep
May 19 09:33:42 greeneggs.bubba.net kernel: Freezing user space processes ... (elapsed 0.002 seconds) done.
May 19 09:33:42 greeneggs.bubba.net systemd[1]: Time has been changed
May 19 09:33:42 greeneggs.bubba.net systemd-logind[772]: Lid opened.
...

没有 systemd 的系统

对于不使用的系统,systemd您有很多地方可以查找。首先,您可以查看日志dmesg。您还可以查找/var/log/syslog与电源管理或 ACPI 相关事件相关的消息。

我会首先查看/var/log/pm_suspend.log,假设它存在。特别是在 Linux Mint 等发行版上,您可能会发现类似这样的消息:

Thu Feb 21 21:21:50 GMT 2013: Running hooks for hibernate.
Running hook /usr/lib/pm-utils/sleep.d/000kernel-change hibernate hibernate:
/usr/lib/pm-utils/sleep.d/000kernel-change hibernate hibernate: success.
Running hook /usr/lib/pm-utils/sleep.d/00logging hibernate hibernate:
...

参考

答案3

既然你已经有了 ThinkPad,除了其他建议(初步提示systemd)之外,如果你正在使用thinkpad_acpi驱动程序,你可能还想看看/sys/devices/platform/thinkpad_acpi/wakeup_reason.该文件包含一个数字,告诉您嵌入式控制器是否由于以下原因唤醒了您的笔记本电脑低电量(至少我认为是这样),码头移除请求等。

作为Documentation/laptops/thinkpad-acpi.txt状态:

wakeup_reason:
    Set to 1 if the system is waking up because the user
    requested a bay ejection.  Set to 2 if the system is
    waking up because the user requested the system to
    undock.  Set to zero for normal wake-ups or wake-ups
    due to unknown reasons.

答案4

dmesg您可以从检查开始,man dmesg但您可能想尝试一下dmesg -k

相关内容