如何找到自上次从待机状态唤醒以来的正常运行时间


29

我想知道自上次从待机状态唤醒以来的正常运行时间。

该命令uptime仅显示当前时间减去上次启动时间之间的时差。

Answers:


30

在中/var/log/pm-suspend.log,查找最后一行,如下所示:

Sun Dec 16 09:30:31 CET 2012: Awake.

那是您最后一次唤醒时间。从那以后,您就可以计算出您的正常运行时间了,保罗提出了建议。

您的logrotate遗嘱会定期“旋转”日志以防止它们变得太大,因此您可能会发现一个空pm-suspend.log文件。在这种情况下,只需查找pm-suspend.log.1文件(您可能还会找到其他名为like等的日志文件pm-suspend.log.2.gz;您可以使用zcat或检查它们zless)。


这对我
有用

5
如果pm-suspend.log是空的怎么办?:(
cprn

1
如果您还关心暂停时间戳,请使用:cat /var/log/pm-suspend.log /var/log/pm-suspend.log.1 | grep -B1 Awake; echo "--"; zcat /var/log/pm-suspend.log.*.gz | grep -B1 Awake
webbertiger

2
我的计算机中没有这样的文件(运行Ubuntu 16.04 LTS)
Ramon Suarez

仅当安装了pm-suspend时文件才存在。但是例如,在我关闭笔记本电脑后,Kubuntu也会进入暂停状态。然后,pm-suspend文件为空。
dmatej

15

对于运行systemd的台式机/服务器,虽然没有直接命令可以直接告诉信息(据我所知),但所有数据都记录在日志中。

您可以grep日记,例如:

echo ">> [SUSPEND] Times during current boot"
journalctl -b 0 |grep "]: Suspending system..."
echo ">> [WAKE] Times during current boot"
journalctl -b 0 |grep "PM: Finishing wakeup"

或者,为获得出色的输出效果,我编写了一个python3脚本(在Fedora 23上运行良好)示例输出:

Initial Boot Timestamp:  2016-01-15 09:31:32 

     Wake Timestamp     |    Suspend Timestamp   |       Awake Time       |
  --------------------  |  --------------------  |  --------------------  |
   2016-01-15 09:31:32  |   2016-01-15 09:36:03  |          0h  4m        |
   2016-01-15 09:36:22  |   2016-01-15 19:15:04  |          9h 38m        |
   2016-01-15 19:22:21  |   2016-01-15 20:00:05  |          0h 37m        |
   ...
   -------------------  |  --------------------  |  --------------------  | 

Summary: Days Since Boot [8.23] | Days Awake [4.14] | Suspend/Wake Cycles: [28]

该脚本在github中。链接到github repo


1
这为我工作在Ubuntu 16.04
raphinesse

很高兴知道我们可以检查日记帐。
Shiplu Mokaddim '16

使用journalctl -b 0 -o short-iso MESSAGE="PM: Finishing wakeup." | tail -1 | cut -d" " -f1最后一个唤醒的只是时间
raphinesse

13

pm-suspend程序不是如何挂起计算机的唯一选择。我的程序日志现在为空,但是我发现了更可靠的命令:

cat /var/log/syslog | grep 'systemd-sleep' | grep "Suspending\|resumed"

输出为:

Oct  2 09:11:48 dmatej-lenovo systemd-sleep[931]: Suspending system...
Oct  2 09:53:10 dmatej-lenovo systemd-sleep[931]: System resumed.
Oct  2 15:02:48 dmatej-lenovo systemd-sleep[27516]: Suspending system...
Oct  2 16:07:19 dmatej-lenovo systemd-sleep[27516]: System resumed.
Oct  2 16:32:48 dmatej-lenovo systemd-sleep[29622]: Suspending system...
Oct  2 17:16:41 dmatej-lenovo systemd-sleep[29622]: System resumed.
Oct  3 00:24:58 dmatej-lenovo systemd-sleep[21316]: Suspending system...
Oct  3 08:17:22 dmatej-lenovo systemd-sleep[21316]: System resumed.
Oct  3 09:09:25 dmatej-lenovo systemd-sleep[24739]: Suspending system...
Oct  3 09:50:47 dmatej-lenovo systemd-sleep[24739]: System resumed.


1

我的机器上没有pm-suspend.log。

这为我工作:

/usr/bin/pmset -g log | grep Wake | grep "due to" | tail -n1

还说了什么唤醒了计算机。:-)


1
如果没有pmset找到命令并且没有这样的文件pmset并且pm-suspend.log为空怎么办?:(
cprn

pm-suspend.log丢失了,这对我
有用

1
这仅适用于Mac
plaisthos

0

您正在使用什么来启动待机状态?

如果可以使用脚本,则在行后

echo -n "standby" > /proc/acpi/sleep

你可以排线

echo `date +%s` >> /var/log/wakeups.log

或类似的东西。这意味着,机器醒来时要做的第一件事就是将当前时间和日期写入日志文件(自纪元以来的n秒钟)。

tail -1 /var/log/wakeups.log会给你最后一次。您可以从当前时间中减去该时间,以获取自上次唤醒以来的秒数。


0

在/ var / log / messages中搜索字符串“ PM:设备还原完成”的最后一次出现。如果您的机器运行时间过长,则可能会旋转日志。



0

扩展步骤答案:

grep Awake /var/log/pm-suspend.log | tail -1

这将获得最后一次唤醒时间的线路。


0

我认为这是一种非常可靠的方法:

systemd[1]: Started Run anacron jobs at resume

搜索当操作系统启动anacron时,但是会开启机器


0

这些答案都不适合我。但我有用地发现sleep.target了正是出于以下原因:

$ journalctl -n4 -u sleep.target
nov. 17 17:16:37 kaa systemd[1]: Reached target Sleep.
nov. 17 18:46:22 kaa systemd[1]: Stopped target Sleep.
nov. 17 19:27:31 kaa systemd[1]: Reached target Sleep.
nov. 17 19:45:21 kaa systemd[1]: Stopped target Sleep.

-1

在Fedora上使用ripgrep

rg Suspend /var/log/messages

结果:

34338:Jul 26 03:03:46 <hostname> systemd-sleep: Suspending system...
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.