date+%s毛刺

我有一个奇怪的问题,我开始排除故障,并想知道是否有人会有任何有用的提示。

我有一个cronjob每分钟执行一个脚本,并将输出附加到文件pipe理器上的文件。 该作业将当前时间戳(date+%s)和当前正常运行时间(包括当前系统时间)打印到文件中。

脚本是:

DATE=`date +%s` UPTIME=`uptime` echo "$DATE;$UPTIME" 

我得到的是:

 1325770921; 14:42:01 up 17 days 1325775379; 14:43:01 up 17 days 1325771041; 14:44:01 up 17 days 

请注意,中间的时间戳约为1小时15分钟。对于原因有什么想法?

您在评论中提到您正在运行虚拟机。 虚拟机应该有一个运行的NTP客户端不断地纠正适当的时间和date。 如果你不这样做,物理硬件时钟和虚拟时钟之间的交互可能会变得混乱,时间会漂移。

实际上, 每个系统都应该运行NTP,但是在虚拟机中这是非常重要的,而不仅仅是推荐的。

Linux和BSD环境应该有NTPd和OpenNTPd可用; 你没有提到你正在使用的环境。

根据您的虚拟机,可能是您的Guest时钟绑定到hosts

请检查

 cat /sys/devices/system/clocksource/clocksource0/available_clocksource cat /sys/devices/system/clocksource/clocksource0/current_clocksource 

标题为“clocksource / 0:Time goes backwards”后,请参阅http://wiki.debian.org/Xen 。 如果您碰巧在Xen虚拟机上,可以尝试一些解决方法。

我们已经有一些有趣的时间跳,这取决于你的dom0多大年纪,你是多么新的domU客人,我们必须使用xenjiffies使时间的行为,并能够真正使用ntp的客人。