从我的程序中,我试图确定是否已从NTP设置了时间,并询问用户是否设置了该时间。
#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
评论
Raspberry Pi的计时精度有多高?如果time.now <小于2010年-则未设置时间。您不需要知道其他任何事情。关机时不会节省时间,根据UNIX / POSIX规范,该时间为1970。要了解时间是否不正确,您需要查询NTP并比较本地时间。您必须先询问时间服务器,才能确定时间是否不同步。
如果time.now <2010将不起作用,因为RPi将从上次关闭时间开始设置当前时间。这就是为什么我想知道时间的设置方式,以便在必要时可以禁用此行为。
南瓜-这个问题与内部时钟的漂移有什么关系?
也许这个问题的标题应该更具体,以避免这些问题之间出现重叠。