我需要能够记录 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以类似的方式在唤醒时运行脚本。