如何检测系统何时暂停?

如何检测系统何时暂停?

我需要能够记录 Ubuntu 10.04 桌面系统暂停和恢复的时间。

我可以通过 DBus 信号 (org.freedesktop.UPower.Resuming()) 检测系统何时恢复,但相应的“org.freedesktop.UPower.Sleeping()”信号从未触发。理想情况下,我想使用 DBus,但鉴于我缺乏成功经验,只要可以从命令行调用它,我就会乐意使用任何解决方案。

我发现了一种方法来做到这一点:

tail -f /var/log/pm-suspend.log | grep “执行暂停”

这只是监听 pm 日志之一的暂停日志记录。虽然这有效,但它可能相当脆弱。我发现过去由于日志语句的变化,依赖日志解析相当成问题。

理想情况下,我希望有一个更强大的机制。调用此机制的服务将以 root 身份运行。

答案1

尝试输入以下内容/etc/pm/sleep.d。这应该与您的机器是否使用 APM 或 ACPI 无关。

#!/bin/sh

LOGFILE="/var/log/sleep.log"

case "$1" in
        resume)
                echo "Resumed from suspend at `date`" >> "$LOGFILE"
                ;;
        thaw)
                echo "Resumed from hibernation at `date`" >> "$LOGFILE"
                ;;
        suspend)
                echo "Suspended to ram at `date`" >> "$LOGFILE"
                ;;
        hibernate)
                echo "Hibernated to disk at `date`" >> "$LOGFILE"
                ;;
esac

答案2

在更现代的系统上可能适用的其他一些选项包括:

cat /var/log/syslog | grep 'systemd-sleep'它将显示带有时间戳的系统暂停和恢复。

或者

journalctl | grep suspend还将显示带有时间戳的暂停和恢复。此处的暂停将类似于PM: suspend entry (s2idle),而恢复将类似于suspend exit

答案3

您可以放入一个脚本/etc/apm/suspend.d. 每次机器挂起时都应该执行它。

您还可以使用/etc/apm/resume.d以类似的方式在唤醒时运行脚本。

相关内容