Raspberry Pi缺少硬件时钟。如何强制NTPD在每次启动后立即更新日期/时间?

我正在运行Raspbian,并且Raspberry Pi使用以太网电缆连接。

评论

我的已经开箱即用了。您正在使用什么音乐?

Raspbian Wheezy

@Thorb Pi通过以太网电缆/ dhcp连接。它根本无法在启动后获得有效日期,需要花费一段时间(10到45分钟)

几分钟后,它将自动执行此操作。确保已将其设置为使用国家标准局(time.nist.gov)上的主时钟,如下所述:raspberrypi.stackexchange.com/questions/68811/…

似乎还没有人令人满意地回答这个问题-即如何在启动后通过NTP同步时间(即不重新启动)。

#1 楼

搜索后,此方法对我有用。
您知道,Raspberry Pi 3默认情况下禁用NTP。
因此,只需键入此选项,即可启用NTP支持: br />
sudo timedatectl set-ntp True


timedatectl status检查结果

如果出现警告,您可能也必须运行sudo timedatectl set-local-rtc true

评论


谢谢,这终于帮助了我,尽管有以前的回答,但这似乎是正确的方法。

– CharlieS
17年6月30日在1:12

那是最好的答案,对我帮助很大。您可以使用'sudo'来避免输入密码(对于运行密码的脚本很有用)。 seconds命令的目的是什么? set-local-rtc

–阿拉德
17年11月29日在13:38

#2 楼

做一个apt-get install ntpdate

ntpdate将在启动以太网接口时运行,并设置来自ntp服务器的时间(请参阅/etc/default/ntpdate)。

如果ntpd正在运行,则ntpdate将不执行任何操作,但是ntpdate将在启动时在ntpd之前运行-因此,只要有以太网连接,这应该可以设置启动时间。 >

评论


Raspbian将拥有所有这些。

–scruss
13年7月4日在1:27

@scruss我的没有。 (2013-02-09 Wheezy Rasbian)

– Pete Kirkham
2014年2月23日14:14在

我的也没有,必须手动进行。

–vaindil
15年2月28日在21:31

如果设置正确,它将自动执行-尽管可能需要几分钟。

– SDsolar
17-10-21在20:24

Linux raspberrypi 4.14.30-v7 +#1102 SMP Mon Mar 26 26:45:49 BST 2018 armv7l GNU / Linux也没有它。

– emix
18年4月19日在13:50

#3 楼

如果时钟不正确,则可能需要通过执行以下操作来强制ntp同步:

sudo /etc/init.d/ntp stop
sudo ntpd -q -g
sudo /etc/init.d/ntp start


评论


它返回错误“ sudo:ntpd:找不到命令”

–皮格马利翁
16年5月18日在9:10

必须安装ntpd才能使用命令

– thaspius
16年5月18日在19:24

它已经安装了,我不是那个无知的:)

–皮格马利翁
16年5月18日在20:04

您能否访问raspberrypi.stackexchange.com/questions/47542/…?我在那儿张贴了细节。

–皮格马利翁
16年5月18日在20:05



这绝对是解决我的问题的方法,但是我发现它是暂时的,直到重新启动为止。最终,我在关闭过程中遇到了一个错误,即它无法更新hwclock,因为hw时钟具有未来的日期(不知道那是怎么回事)。但是解决方法是更新时钟。这迫使更新到伪造的硬件时钟,然后在启动时时间至少接近当前时间,因此ntp可以正常执行此工作。

– Piwaf
16-09-20在18:36

#4 楼

如果您在raspi-config中设置了时区,则Raspberry Pi在连接到Internet时会自动更新启动时间。 />选择sudo raspi-config

选择地理区域
选择最近的城市
选择Internationalisation Options

选择I2 Change Timezone立即重新启动


评论


这对我来说很好

– AlexG
17年2月17日在6:41

I2更改时区选项已不存在

–混合
19年6月25日在21:59

它确实存在,至少在Raspbian Buster中存在。

–PotatoBox
20年1月11日,17:45

“国际化选项”现在称为“本地化选项”

–阿德里安
20-2-26在19:01

#5 楼

请参阅论坛帖子。时间在Pi 3上并没有与官方加密狗同步。

ntpd发出ToS字段设置为0xc0的IP / UDP数据包。因此,这与我(和许多其他人)在通过Wi-Fi内部接口进行操作时对Raspberry Pi3遇到的其他问题非常相似。

作为解决方法,请添加命令

/sbin/iptables -t mangle -I POSTROUTING 1 -o wlan0 -p udp --dport 123 -j TOS --set-tos 0x00


到文件

/etc/rc.local


在出口0行之前。接下来,重新启动并检查。

评论


我遇到了与为XMas安装的RPi3相同的问题,并且您解决了我的问题。太好了!

– jfmessier
16 Dec 27'1:49

#6 楼

它应该已经在更新时间了。 NTPD服务器应在交换文件之后和SSHD之前启动。

检查/etc/ntp.conf文件以确保已配置。

它应至少列出一台服务器。我将time.nrc.ca用于服务器。

ntp.conf的手册页在这里:
http://linux.die.net/man/5/ntp.conf

#7 楼

这个问题显然由于某种原因被“回收”了,因此回收一些旧的答案似乎也很合适:)
这个问题是在2013年提出的。 ntpd)。但是,随着2017年wheezy取代stretchsystemd-timesyncd分布,情况发生了变化。在这种旧的答案中,对于那些对此感兴趣的人讨论了这种变化的原因以及一些技术上的权衡。
关于这里的问题,也许是当前环境中最突出的观点(后ntpd)是这样的:如果您决定在当前的Raspbian发行版中安装systemd,请知道ntpd将“做正确的事”!它将检查是否存在其他NTP守护程序,并相应地调整其行为。它只是工作。您可以通过在命令行中输入以下内容来阅读全部内容:
ConditionFileIsExecutable =!/ usr / sbin / ntpd
ConditionFileIsExecutable =!/ usr / sbin / openntpd
ConditionFileIsExecutable =! / VBoxService

换句话说:systemd-timesyncd检查是否在系统上运行了这些替代时间服务中的任何一项,如果是,它将礼貌地向他们提供计时服务。

#8 楼

我儿子的Rasberry Pi无法即时更新时间,在尝试了上述所有建议之后,我可以手动更新而不是自动更新。最终,在寻找其他地方也没有成功之后,我发现Rasberry Pi随附的ntp.conf文件注释掉了以下几行: br />
#restrict 127.0.0.1
#restrict ::1

在终端中编辑ntp conf文件现在为:

sudo nano /etc/ntp.conf

为我们。它使用WiFi和以太网电缆进行更新。我不知道如果不更改上面建议的rc.local,是否可以使用WiFi更新,因为当我找到上面的解决方案时,我已经进行了更改,并且还没有撤消它。

#9 楼

当遇到类似问题时,我找到了timedatectl应用程序可以为我提供帮助。默认情况下已安装该工具,并且'--help'提供了有关如何使用该工具的很好的概述。

#10 楼

您无需使用ntp即可解决此问题。有一个脚本可以从服务器读取日期,您只需要将日期设置为该脚本的结果即可(您的Raspberry Pi需要连接到互联网)。然后,您需要在启动时运行该命令。

步骤1:从服务器中检索日期。在启动时,将其添加到文件/etc/rc.local(在Ubuntu 16.04上运行)。

sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"


CREDITS: .com / a / 655528/572294

2- https://askubuntu.com/a/1199/572294

评论


您可能不需要使用ntp,但应该使用。它是更好,更快,更准确的行业标准。当存在良好标准时,请不要伪造自己的怪异事物。

– Cameron Tacklind
20年3月5日,1:13

如果您的RasPi运行24/7并没有太大帮助。

– Ingo
20 Mar 26 '20 at 12:58

#11 楼

我在Pi不同步时遇到了类似的问题。这些解决方案均无效。原来我的网络环境阻止了NTP端口(123)。
为我解决的方法是

sudo apt install htpdate


来自: /www.raspberrypi.org/forums/viewtopic.php?t=222236

而是通过HTTP调用更新系统时钟。

#12 楼

这就是我最终采用的方法。当我查看Raspian系统时,这些答案中的许多似乎都表明这些东西并没有检出:
正在执行任何操作,或者timedatectl在NIC的启动状态下进行同步,或者甚至已安装/配置了NTPD。 >
$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"


并安装ntp

$ cat /etc/rc.local
logger "Beginning force syncing NTP..."
service ntp stop
ntpd -gq
service ntp start
logger "Finished force syncing NTP..."


/etc/rc.local的结果是: >

评论


在最小的树莓派上不起作用:无法启动ntp.service:未找到单元ntp.service。 ntpd也不存在。 Pi最终肯定会赢得时间。 (我正在研究这个问题,因为在此之前运行时,如果没有-k,我的HTTPS卷发将失败)

–陆even
18年8月9日在18:32

@StevenLu-我将更新A'er,以包括ntp的安装。

–slm
18年8月9日在20:27

@StevenLu-易于安装ntp

–slm
18年8月10日在12:23

#13 楼

我在默认映像上使用以下命令来同步时间,而无需安装其他软件包:

timedatectl set-local-rtc 0
timedatectl set-ntp 1
timedatectl status


#14 楼

我在互联网上的某个地方找到了它。似乎可以在Buster上工作:

sudo timedatectl set-ntp false && sudo timedatectl set-time "$(date --iso-8601=seconds | cut -d "+" -f1 | tr T ' ')" && sudo timedatectl set-ntp true


我不确定是否真的需要中间命令(set-time)。