Raspberry Pi从哪里获得时间?


44

我不必在Raspberry Pi上设置时钟(除了时区之外)。时间从哪里来?关于它的准确性如何?


全新安装使它可以从各种来源获取时间。有关详细信息,以及为什么你应该将其更改为time.nist.gov的原因,看到这个Q&A: raspberrypi.stackexchange.com/questions/68811/...
SDsolar

Answers:


45

Raspbian从NTP服务器(“时间服务器”)获取时间。

完全拔下Raspberry Pi,拔出网络电缆,然后再次启动Raspberry Pi。您将看到日期和时间不正确。

如果你想/需要的日期和时间不能复位而不被插入到互联网,你需要一个实时时钟(RTC) -例如,像这样 -这将保持当前的时间,通过使用电池运行时钟。这也是计算机不通电时如何保持时间的方法。

更新 附带说明一下,上述RTC时钟并不是保持两次功率损耗之间的时间精确的唯一方法。您也可以使用GPS模块并将其连接到GPIO引脚。

准确性 尽管您的时钟时间有相当多的时间,但它相当准确。由于服务器的更改会逐渐应用于您的本地时钟,因此最多可能需要3个小时来进行自我纠正。网络稳定性对准确性影响最大,因为不可预测的网络(诸如3G之类的无线网络)将使准确性变得非常困难。简而言之:准确性非常好,您的计算机与实际时间(从NTP服务器)之间的时间差通常小于100ms


1
好答案。感谢您提供有关硬件时钟的链接
Scoop 2013年

1
好的答案;可以通过提及NTP协议的准确性来进行改进。
Alex Chamberlain

@AlexChamberlain感谢您的注意,我打算添加它,但是它完全让我忘了。我现在添加了。
Vincent P

当我的Pi与网络连接时,我注意到时间现在已经偏移了30分钟。ntpd是默认启用的还是我需要手动执行?
andig 2013年

也许是这样,直到Raspberry Pi3。两个月前我买了一个,而NTP时间更新被搞砸了,至少在官方Raspbian Jessie上是如此。我针对这个问题打开了三个线程,每个人都不知所措。我不得不购买硬件模块以节省时间来解决该问题。
皮格马利翁

21

摩根的回答给了我解决问题所需的提示。

  1. 转到http://support.ntp.org/bin/view/Servers/NTPPoolServers
    选择您的地区,然后显示您的国家和服务器列表。

  2. 编辑您的/etc/ntp.conf文件,例如

    须藤vim /etc/ntp.conf

    将服务器列表替换为您在网页中找到的服务器列表。例如

    服务器0.dk.pool.ntp.org iburst
    服务器1.dk.pool.ntp.org iburst
    服务器2.dk.pool.ntp.org iburst
    服务器3.dk.pool.ntp.org iburst

    保存并退出。

  3. 重新启动ntp守护进程。

    sudo /etc/init.d/ntp重新启动

  4. 检查日期是否正确。

    日期
    2013年6月20 日星期四13:39:20

在我的一台服务器中,日期被立即更改。在另一个我不得不等待一些细节。


2
如果您在英国(或其他国家),则可以更改两个字母的国家代码以适合.egserver 0.uk.pool.ntp.org iburst
Pierz

大约15分钟后,第4步才对我有用。也许是因为我跑了ntpq -p。我正在使用:“ Raspbian GNU / Linux 7(轻声)”和“ Linux raspberrypi 4.1.7+#817 PREEMPT星期六9月19 15:25:36 BST 2015 armv6l GNU / Linux”
Peter Mortensen

也许hwclockfake-hwclock正在干扰(但“ /etc/rc.conf”部分已过时)
Peter Mortensen


在关闭5分钟后,它落后了5分钟(ntpq -p没什么大不了)。
Peter Mortensen

14

如果您有此fake-hwclock软件包,它还会执行时间戳保存技巧,以防止重置时钟。设备关闭时,时间不会提前,因此会滞后。内部时钟在开启时也会漂移一点点。

如果您具有Internet连接(或具有服务器的lan)并运行ntp(ntpd / ntpdate),则可以通过网络获得时间,其他答案指出。当同步时,它确实非常准确。在线服务器也将为您提供共识的“世界时间”。


有趣的fake-hwclock。为什么有人要在机器关闭时冻结时钟?我想不出一个用例。在那儿?
2013年

2
@Scoop因为替代方法是浪费时间,所以它将重置。这将导致任何记录的时间戳似乎来自未来等。“冻结”时钟可确保时间继续向前移动,即使计数已关闭:)
XTL 2013年

1
使用ntp或其他方式设置时钟当然仍然可以使用,fake-hwclock仅在启动和关闭时运行。
XTL

1
对于fake-hwclock在Arch Linux的,使用archplusplus.co.uk/post/40202081414/...
levinalex

2
现在,该软件包现在似乎已默认安装在Raspbian上。
Pierz

11

Raspberry Pi没有集成的实时时钟(RTC)来提高成本效益:请参阅问题“为什么没有实时时钟(RTC)?” 在官方FAQ中。这意味着当您拔下Raspberry Pi时,它会浪费时间。当您重新上电时,时间将初始化为1970年1月1日(又名Unix epoch)。

Raspberry Pi使用NTP(计算机之间的时钟同步协议)在网络上设置时间。由于某些计算机专用于使用原子钟进行时间计算,因此该协议已在Internet上广泛使用,以确保计算机具有相同的时间并具有很高的可靠性。

ntpd是一个守护程序(后台软件)启动了启动时间,它负责使用NTP协议同步时间。ntpd可以用文件配置/etc/ntp.conf。例如,您可以在此处设置服务器以请求时间。


还不记得最后一次吗?我一周前关闭了Raspberry Pi,date现在显示该日期已有一周的时间,而且从昨天和今天(正常运行一些情况下,今天和今天)开始,要多花几个小时。(Raspbian,对应于2015年中期)。
彼得·莫滕森

运行cat /etc/fake-hwclock.data,您将看到上次fake-hwclock保存的时间(显然是在关机时间)。fake-hwclock用于RPi上模拟真实时钟。我认为您在没有Internet访问或没有ntpd开始更新时间的情况下启动了RPi 。你能确认吗?
Morgan Courbet 2015年

5

Raspbian Stretch:默认情况下未安装NTP

Raspbian Stretch似乎有所改变。简而言之,不再安装ntp。运行不dpkg -l | grep ntp返回任何内容。

显然,Stretch放弃了该ntp应用程序,转而使用systemd。检查man timesyncd条目以获取有关配置设置的详细信息。timesyncd仍然使用ntp服务器来更新时间。如果要手动配置这些服务器,则可以在/etc/systemd/timesyncd.conf文件中进行配置。


1
完成编辑sudo systemctl restart timesyncd后,请通过以下方式重新启动服务,之后,journalctl -u timesyncd -f有时公司防火墙会阻止该端口以检查日志。在这种情况下,请使用提供的公司ntp服务器URL。
typelogic

我相信守护程序的正确名称是systemd-timesyncd,因此重新启动的命令将是systemctl restart systemd-timesyncd
chb

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.