最新的Raspbian版本如何在Raspberry Pi上保留时间?什么设置来自NTP服务器的内部时钟?当没有NTP服务器可用时会发生什么?

从我的程序中,我试图确定是否已从NTP设置了时间,并询问用户是否设置了该时间。

评论

Raspberry Pi的计时精度有多高?

如果time.now <小于2010年-则未设置时间。您不需要知道其他任何事情。关机时不会节省时间,根据UNIX / POSIX规范,该时间为1970。要了解时间是否不正确,您需要查询NTP并比较本地时间。您必须先询问时间服务器,才能确定时间是否不同步。

如果time.now <2010将不起作用,因为RPi将从上次关闭时间开始设置当前时间。这就是为什么我想知道时间的设置方式,以便在必要时可以禁用此行为。

南瓜-这个问题与内部时钟的漂移有什么关系?

也许这个问题的标题应该更具体,以避免这些问题之间出现重叠。

#1 楼

Raspbian有两种用于计时的软件解决方案。由于NTP需要网络连接,并且如果您的Raspberry Pi没有连接到网络,这是毫无用处的,因此它也使用了false-hwclock。它会定期保存当前时钟并在启动时加载。

pi@raspberrypi ~ $ cat /etc/fake-hwclock.data 
2012-08-15 03:17:01


这不太准确,但是可以消除每次重新启动后回到1970年的时间问题。

评论


好猜吉文斯! :-)

– Piotr Kula
2012年8月15日7:55



@ asalamon74:您可以添加如何禁用fake-hwclock还是需要将其卸载?

–人
2012年8月15日上午11:17

#2 楼

您可以记录NTP统计信息,然后从程序中解析日志。

NTP守护程序设置存储在文件/etc/ntp.conf中。取消使用指令statsdir的注释行以启用NTP统计信息记录。确保引用的目录存在并且对于用户ntpd是可写的。

#3 楼

要检查NTP服务器是否设置了时间,您可以尝试使用ntpq -p,您将获得以下内容:*:

$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*223.212.138.2    .MRS.           1 u  424  512  377    4.080   -4.551  21.857
+ts0.tttsc.nvm.e  .GPS.           1 u  387  512  363    1.304   -7.563  28.405
+218.89.10.3      217.13.17.82    2 u  334  512  377    1.853   -4.562  19.474


“到达”将是>如果已到达NTP服务器,则在某行中为0,从而设置时间。这是8位八进制八进制滑动,即0,1,3,7,17​​,37,77,177,377

或者-您可以grep'stratum'<16或sync_ntp(这显然不在RPi上)

$ ntpq -c rl
associd=0 status=0615 leap_none, sync_ntp, 1 event, clock_sync,
version="ntpd 4.2.6p5@1.2349-o Mon Jul 18 09:22:49 UTC 2013 (1)",
processor="x86_64", system="Linux/2.6.32-431.29.2.el6.x86_64", leap=00,
stratum=4, precision=-21, rootdelay=40.242, rootdisp=315.102,
refid=192.168.1.123,
reftime=d82131cd.fbb96c5e  Thu, Nov 27 2014 13:14:53.983,
clock=d82138e6.fd03bdd1  Thu, Nov 27 2014 13:45:10.988, peer=61770, tc=9,
mintc=3, offset=5.214, frequency=52.475, sys_jitter=12.217,
clk_jitter=23.319, clk_wander=1.373
$


或者(我认为ntpstat在RPi上不立即可用)

$ ntpstat
synchronised to NTP server (192.168.1.123) at stratum 4
   time correct to within 310 ms
   polling server every 512 s


并使用退出代码在这里解释了http://www.cyberciti.biz/faq/linux-unix-bsd-is-ntp-client-working/显然不是RPi特有的...

*时间服务器地址不是真实的

#4 楼

计时全部在软件中。如果不使用NTP,则不会计时。

如果要检查是否已设置时钟,则只需使用date来查看它是否显示Unix纪元,这是Pi会默认使用的纪元。

评论


不正确当没有网络连接时,RPi将从上次关闭时间开始设置当前时间。因此,时钟总是比正确时间早一些随机时间,而不是Unix时期。

–人
2012年8月14日22:22

在我的Pi上肯定不是这样。如果我在没有网络连接的情况下启动它,那么时间就到了。我现在可以看到这个。

–活动
2012年8月14日在22:28

这可能取决于分布。

–亚历山大·张伯伦
2012年8月15日在6:03

@AlexChamberlain似乎很奇怪。

–活动
2012年8月15日下午6:40

@Jivings如果Raspbian上有一个名为fake-hwclock的软件,则可能不会在Arch上使用。听起来像Arch忽略的那种绒毛。

–亚历山大·张伯伦
2012年8月15日上午8:23