问题很简单:计算机处于以下任何状态的时间段是否计入系统的总正常运行时间?
- 冬眠
- 暂停系统
- 改变运行级别
笔记:
- 我对命令本身不感兴趣
uptime
。快速查看 Terrance 提供的源代码链接,没有发现任何有关休眠或暂停的信息 - 我感兴趣的是内核如何计算系统运行的时间,以及暂停/休眠如何影响该值。
- 如果可能,请提供文档参考
答案1
该uptime
命令从 中获取数据/proc/uptime
,该数据完全由内核公开。因此,我们将查看内核文档以了解这实际上代表什么。
在Documentation/filesystems/proc.txt
, 我们看:
uptime Wall clock since boot, combined idle time of all cpus
(此文件中有两个值,因此有两个描述)
这里提到的“挂钟”很重要——它指的是所有经过的时间,无论机器的时钟是否在运行。因此,这个时间将在挂起或休眠状态下不断增加。
换句话说,正常运行时间值实际上就是自上次启动以来经过的时间。
答案2
非常uptime
具有误导性。如果你使用uptime -s
它,会更有意义:
$ uptime -s
2019-10-31 05:30:09
现在你可以看到它只是显示了上次启动时间。如果你想知道真正的正常运行时间,请参阅这个答案. 输出样例:
$ 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
Nov 01 05:51:27 to Nov 01 17:08:34 lasting 40,627 seconds
Nov 02 00:01:33 to Nov 02 10:28:46 lasting 37,633 seconds
Nov 02 18:15:59 to Nov 02 19:10:14 lasting 3,255 seconds
Nov 02 21:17:33 to Nov 03 05:31:54 lasting 33,261 seconds
Nov 03 12:06:39 to Nov 03 14:22:50 lasting 8,171 seconds
Nov 03 22:28:12 to Nov 04 04:17:13 lasting 20,941 seconds
Nov 04 05:49:40 to Nov 04 16:48:52 lasting 39,552 seconds
Nov 04 21:45:48 to Nov 05 04:19:26 lasting 23,618 seconds
Nov 05 05:52:05 to Nov 05 16:32:38 lasting 38,433 seconds
Nov 05 21:12:18 to Nov 06 04:16:50 lasting 25,472 seconds
Nov 06 05:50:45 to Nov 06 16:22:54 lasting 37,929 seconds
Linux uptime 572,689 seconds (6 Days 15 Hours 4 Minutes 49 Seconds)
13 Suspends 366,910 seconds (4 Days 5 Hours 55 Minutes 10 Seconds)
Real uptime 205,779 seconds (2 Days 9 Hours 9 Minutes 39 Seconds)