如何显示排除睡眠模式时间的正常运行时间?

如何显示排除睡眠模式时间的正常运行时间?

我将笔记本电脑置于挂起模式,稍后将其唤醒,现在它显示正常运行时间约为 23 小时(带有uptime),这显然是不正确的。我怀疑uptime只是返回启动时时间戳与现在时间戳之间的差异。

有没有办法显示正常运行时间,不包括在挂起和休眠等低功耗模式下花费的时间?

答案1

以下命令适用于我的 Mint 19 上的 Python 2.7.15rc1。
它们将显示不包括睡眠时间的正常运行时间。

python3 -c 'import time;print(f" {(time.clock_gettime(time.CLOCK_MONOTONIC))}")'

上面显示的时间以秒为单位,带小数。

python3 -c 'import time;second=int(time.clock_gettime(time.CLOCK_MONOTONIC));print(f" {second} seconds")'

上面显示的时间以秒为单位,没有小数点。

python3 -c 'import time;second=int(time.clock_gettime(time.CLOCK_MONOTONIC));minute=second//60;print(f" {minute} minutes")'

上面显示的时间以分钟为单位。

python3 -c 'import time;s=int(time.clock_gettime(time.CLOCK_MONOTONIC));h=s//3600;m=(s-h*3600)//60;print(f"{h} hours {m} minutes")'

上面显示了以小时和分钟为单位的时间。

python3 -c 'import time,datetime;print(datetime.timedelta(seconds=time.clock_gettime(time.CLOCK_MONOTONIC)))'

上面显示了以小时、分钟和秒为单位的时间。

python3 -c 'import time,datetime;d=datetime.datetime(1,1,1)+datetime.timedelta(seconds=time.clock_gettime(time.CLOCK_MONOTONIC));print(f"{d.day-1} days, {d.hour} hours, {d.minute} minutes")'

上面显示了以天、小时和分钟为单位的时间。

我用过CLOCK_MONOTONICAwk创建一个脚本,如果我的 Mint 在同一日期启动多次,该脚本将计算总时间。这Awk命令甚至可以用来计算一周/一个月/一年的总时间。

答案2

您可能想使用 C 函数clock_gettime(CLOCK_MONOTONIC_RAW),这不是由任何实用程序(据我所知)提供的。我看到一个答案给出了蟒蛇的例子关于如何访问它,这可能比编译 C 程序来完成同样的事情更容易。

答案3

解析Systemd的journalctl

suspend.service从启动时间(恢复时)减去 systemd 的启动时间即可得出暂停的时间量:

$ journalctl -b-0 | grep -E 'systemd\[1]: Start.*Suspend'
Oct 31 05:55:19 alien systemd[1]: Starting Suspend...
Oct 31 16:54:26 alien systemd[1]: Started Suspend.
Oct 31 23:21:21 alien systemd[1]: Starting Suspend...
Nov 01 04:29:12 alien systemd[1]: Started Suspend.
 (... SNIP ...)
Nov 07 05:53:36 alien systemd[1]: Starting Suspend...
Nov 07 16:37:36 alien systemd[1]: Started Suspend.
Nov 07 21:07:28 alien systemd[1]: Starting Suspend...
Nov 08 05:08:52 alien systemd[1]: Started Suspend.

标记的条目Started Suspend.可以解释为机器从挂起状态恢复的时间。

您可以使用此脚本获得格式化输出:

这是 bash 脚本生成的内容:

$ suspendtime
Oct 31 05:55:19 to Oct 31 16:54:26 lasting 39,547 seconds
Oct 31 23:21:21 to Nov 01 04:29:12 lasting 18,471 seconds
  (... SNIP ...)
Nov 07 05:53:36 to Nov 07 16:37:36 lasting 38,640 seconds
Nov 07 21:07:28 to Nov 08 05:08:52 lasting 28,884 seconds

Linux uptime 693,600 seconds (8 days, 40 minutes)
16 Suspends 457,547 seconds (5 days, 7 hours, 5 minutes, 47 seconds)
Real uptime 236,053 seconds (2 days, 17 hours, 34 minutes, 13 seconds)

Linux 报告的正常运行时间为 8 天 40 分钟。算上暂停的时间,确实是2天18小时左右。

相关内容