Answers:
Raspbian从NTP服务器(“时间服务器”)获取时间。
完全拔下Raspberry Pi,拔出网络电缆,然后再次启动Raspberry Pi。您将看到日期和时间不正确。
如果你想/需要的日期和时间不能复位而不被插入到互联网,你需要一个实时时钟(RTC) -例如,像这样 -这将保持当前的时间,通过使用电池运行时钟。这也是计算机不通电时如何保持时间的方法。
更新 附带说明一下,上述RTC时钟并不是保持两次功率损耗之间的时间精确的唯一方法。您也可以使用GPS模块并将其连接到GPIO引脚。
准确性 尽管您的时钟时间有相当多的时间,但它相当准确。由于服务器的更改会逐渐应用于您的本地时钟,因此最多可能需要3个小时来进行自我纠正。网络稳定性对准确性影响最大,因为不可预测的网络(诸如3G之类的无线网络)将使准确性变得非常困难。简而言之:准确性非常好,您的计算机与实际时间(从NTP服务器)之间的时间差通常小于100ms。
摩根的回答给了我解决问题所需的提示。
转到http://support.ntp.org/bin/view/Servers/NTPPoolServers
选择您的地区,然后显示您的国家和服务器列表。
编辑您的/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
保存并退出。
重新启动ntp守护进程。
sudo /etc/init.d/ntp重新启动
检查日期是否正确。
日期
2013年6月20 日星期四13:39:20
在我的一台服务器中,日期被立即更改。在另一个我不得不等待一些细节。
server 0.uk.pool.ntp.org iburst
ntpq -p
。我正在使用:“ Raspbian GNU / Linux 7(轻声)”和“ Linux raspberrypi 4.1.7+#817 PREEMPT星期六9月19 15:25:36 BST 2015 armv6l GNU / Linux”
hwclock
或fake-hwclock
正在干扰(但“ /etc/rc.conf”部分已过时)
ntpq -p
没什么大不了)。
如果您有此fake-hwclock
软件包,它还会执行时间戳保存技巧,以防止重置时钟。设备关闭时,时间不会提前,因此会滞后。内部时钟在开启时也会漂移一点点。
如果您具有Internet连接(或具有服务器的lan)并运行ntp(ntpd / ntpdate),则可以通过网络获得时间,其他答案指出。当同步时,它确实非常准确。在线服务器也将为您提供共识的“世界时间”。
fake-hwclock
。为什么有人要在机器关闭时冻结时钟?我想不出一个用例。在那儿?
fake-hwclock
在Arch Linux的,使用archplusplus.co.uk/post/40202081414/...
Raspberry Pi没有集成的实时时钟(RTC)来提高成本效益:请参阅问题“为什么没有实时时钟(RTC)?” 在官方FAQ中。这意味着当您拔下Raspberry Pi时,它会浪费时间。当您重新上电时,时间将初始化为1970年1月1日(又名Unix epoch)。
Raspberry Pi使用NTP(计算机之间的时钟同步协议)在网络上设置时间。由于某些计算机专用于使用原子钟进行时间计算,因此该协议已在Internet上广泛使用,以确保计算机具有相同的时间并具有很高的可靠性。
ntpd
是一个守护程序(后台软件)启动了启动时间,它负责使用NTP协议同步时间。ntpd
可以用文件配置/etc/ntp.conf
。例如,您可以在此处设置服务器以请求时间。
date
现在显示该日期已有一周的时间,而且从昨天和今天(正常运行一些情况下,今天和今天)开始,要多花几个小时。(Raspbian,对应于2015年中期)。
cat /etc/fake-hwclock.data
,您将看到上次fake-hwclock
保存的时间(显然是在关机时间)。fake-hwclock
用于RPi上模拟真实时钟。我认为您在没有Internet访问或没有ntpd
开始更新时间的情况下启动了RPi 。你能确认吗?
Raspbian Stretch似乎有所改变。简而言之,不再安装ntp。运行不dpkg -l | grep ntp
返回任何内容。
显然,Stretch放弃了该ntp
应用程序,转而使用systemd。检查man timesyncd
条目以获取有关配置设置的详细信息。timesyncd
仍然使用ntp服务器来更新时间。如果要手动配置这些服务器,则可以在/etc/systemd/timesyncd.conf
文件中进行配置。
sudo systemctl restart timesyncd
后,请通过以下方式重新启动服务,之后,journalctl -u timesyncd -f
有时公司防火墙会阻止该端口以检查日志。在这种情况下,请使用提供的公司ntp服务器URL。
systemd-timesyncd
,因此重新启动的命令将是systemctl restart systemd-timesyncd
如果要记录或保持离线状态下的时间,则可能需要添加Real Time Clock芯片,例如DS1307。