Raspberry Pi上的时间如何保存?


17

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

从我的程序中,我试图确定是否已通过NTP设置了时间,并要求用户对其进行设置。



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

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

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

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

Answers:


22

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

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

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


好猜吉文斯!:-)
Piotr Kula 2012年

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

2

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

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


1

要检查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特有的...

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


-1

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

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


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

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

2
这可能取决于分布。
亚历克斯·张伯伦

1
@AlexChamberlain似乎很奇怪。
吉文斯

1
@Jivings如果Raspbian上有一个名为的软件fake-hwclock,则可能不在Arch上。听起来像Arch忽略的那种绒毛。
亚历克斯·张伯伦
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.