为什么 dmesg 时间戳给出的时间与实际时间(以及“date”的输出)不同?

为什么 dmesg 时间戳给出的时间与实际时间(以及“date”的输出)不同?

我正在使用 Ubuntu 16.04.2 LTS

dmesg输出如下行:

[ma mei  8 09:00:16 2017] [UFW BLOCK] IN=eth0 OUT= MAC= SRC=140.205.228.53 DST=xx.xxx.xxx.xxx LEN=143 TOS=0x00 PREC=0x00 TTL=111 ID=10224 DF PROTO=UDP SPT=53 DPT=39382 LEN=123

这与的输出不同date

$ date
ma  8 mei 2017  8:17:05 CEST

能否解释一下为什么时间戳dmesg与实际时间不同?

答案1

解决方法是使用 journalctl 加上 -k、--dmesg。我使用 -k 因为它更短:

journalctl -k

它将只显示内核消息和正确的时间。

仅显示与短语匹配的内核行:

journalctl -kg phrase

答案2

这实际上不是 Ubuntu 特有的,但似乎是一个合理的答案,因为这个问题已经开放了一段时间。答案的副本来自服务器故障

为了验证你的理论(顺便说一句,这是正确的),请以 root 身份执行以下操作:

hwclock --show

这将显示您正在执行命令的服务器上的硬件时钟。

要将您的硬件时钟与系统时间(由 ntp 管理)同步,请运行以下命令:

hwclock --systohc --utc

最后一个参数(--utc)告诉 hwclock 以协调世界时的形式存储硬件时钟中的时间。

此外,请记住 dmesg(1) 的手册页内容如下,因此您所遇到的行为是有记录的且有效的:

   -T, --ctime
          Print human-readable timestamps.

          Be aware that the timestamp could be inaccurate!  The time
          source used for the logs is not updated after system
          SUSPEND/RESUME.

相关内容