kern.log 中的“00:00:00”时间戳是什么意思?

Ste*_*ett 5 linux boot logs kernel timestamps

我正在查找 kern.log 中特定问题的原因。有许多条目的时间戳为 00:00:00:

Jun 11 00:00:00 mymachine kernel: [    0.000000] Initializing cgroup subsys cpusetJun 11 00:00:00 mymachine kernel: [    0.000000] Initializing cgroup subsys cpu
Jun 11 00:00:00 mymachine kernel: [    0.000000] Linux version 3.2.0-33-virtual (buildd@batsu) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #52-Ubuntu SMP Thu Oct 18 16:48:3
7 UTC 2012 (Ubuntu 3.2.0-33.52-virtual 3.2.31)
Jun 11 00:00:00 mymachine kernel: [    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-3.2.0-33-virtual root=LABEL=cloudimg-rootfs ro console=ttyS0
Run Code Online (Sandbox Code Playgroud)

假设我实际上并没有在午夜启动机器 - 00:00:00 时间戳是否意味着启动过程的特定阶段?他们这样做有什么特别的原因吗?

(这是一个托管在 OpenStack 上的 Ubuntu Precise VM,如果这很重要。我认为这次启动是在从另一个映像克隆之后立即启动的。)

编辑更多信息:

据我所知 ( pgrep ntp, ls /etc/ntp*) ntp 没有运行。

时间似乎(正确)设置为 UTC,(错误地)没有设置本地时区。

EDIT2 00:00:00 的最后一个日志条目如下所示:

Jun 11 00:00:00 mymachine kernel: [    6.324599] type=1400 audit(1370908796.761:11): apparmor="STATUS" operation="profile_load" name="/usr/sbin/tcpdump" pid=875 comm="apparmor_parser"
Jun 11 00:00:02 mymachine kernel: [   12.259133] postgres (1033): /proc/1033/oom_adj is deprecated, please use /proc/1033/oom_score_adj instead.
Jun 11 00:00:05 mymachine kernel: [   13.592385] eth0: no IPv6 routers present
Jun 11 06:22:15 mymachine kernel: [22942.768233] init: tilemill main process (3167) killed by TERM signal
Jun 11 06:40:14 mymachine kernel: [24022.599001] init: tilemill main process (5640) killed by TERM signal
Run Code Online (Sandbox Code Playgroud)

slm*_*slm 1

看一下另一个标题为“ Correlated /var/log/* timestamps”的Unix & Linux 问题。

计时细节/分辨率由启动期间传递给内核的设置控制:

$ grep PRINTK /boot/config-`uname -r`
CONFIG_PRINTK=y
CONFIG_SND_VERBOSE_PRINTK=y
CONFIG_PRINTK_TIME=y
CONFIG_BOOT_PRINTK_DELAY=y
CONFIG_EARLY_PRINTK=y
CONFIG_EARLY_PRINTK_DBGP=y
Run Code Online (Sandbox Code Playgroud)

您可以在kernel.org git repo中阅读有关这些选项的更多信息。

摘自上面的页面

配置PRINTK_TIME

bool "Show timing information on printks"
depends on PRINTK
help
Run Code Online (Sandbox Code Playgroud)

选择此选项会导致将 printk() 消息的时间戳添加到 syslog() 系统调用的输出和控制台上。

时间戳始终在内部记录,并导出到/dev/kmsg。该标志仅指定是否应包含时间戳,而不是记录时间戳。

该行为还由内核命令行参数 printk.time=1 控制。请参阅文档/kernel-parameters.txt

时间戳[ 0.000000]以系统启动后的秒数为单位。