服务器时间关闭了 7 小时(而不是上午 10 点,它是凌晨 3 点,即使date显示了正确的时区)。ntpq 的输出是:
$ ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
xx.xxx.xxx.x.ar xxx.x.xx.xx 2 u 72 1024 177 6.516 2520657 1650156
ntp.xxxx.ac.uk xxx.xxx.xxx.x 2 u 7h 1024 377 14.039 2520655 1347346
xxx.xxx.xxx.xx xxx.xxx.xxx.x 2 u 114 1024 377 5.449 -18.941 2130343
ns1.xxxxxxx.com xxx.x.xx.xx 2 u 148 1024 377 8.050 2520655 1650156
Run Code Online (Sandbox Code Playgroud)
时间由以下人员确定:
ntpdate -u 0.europe.pool.ntp.org
Run Code Online (Sandbox Code Playgroud)
然而,几天后它又发生了。我怀疑 中的第二行ntpq -p,它表示自上次收到数据包以来已经过了7 小时。但如果这就是原因,那为什么ntp不使用其他服务器来同步时间呢?
发生了什么事?您将如何防止这种情况再次发生?
编辑另一件可能有用的考虑是它是一个虚拟机。虚拟机是否可能处于某种暂停状态?
注意 …
我对在没有连接到外部时间服务器的本地网络上使用 GPS 接收器作为外部时钟源来实现带有 NTP 守护程序(客户端版本 3)的时间服务器有疑问。
我尝试使用三种不同的 GPS 设备:
和两种不同的驱动程序类型:20 (NMEA) 和 28 (SHM - 共享内存类型)。对于备份,当 GPS 不可用时,我有一个无纪律的本地时钟(驱动程序类型 1)。
当使用驱动程序类型 28 并且 GPS 信号消失或未通过完整性检查时,系统开始使用其本地时钟,但在这种情况下存在过多的离散。如果存在远程服务器,系统会继续正常工作并使用远程(备用)服务器进行同步。系统将在只有本地网络连接的情况下运行。当使用驱动程序类型 20 时,我得到的是“*”而不是“o”,而且似乎 PPS 信号没有用于同步,尽管 ppstest 通过了。
我有一个未连接到 Internet 的 LAN,我正在尝试将所有计算机(Windows 和 Linux)同步到 NTP 服务器。我所能找到的只是设置带有 Internet NTP 服务器的 NTP 客户端。
我如何设置我自己的 Linux NTP 服务器,或者找到关于如何设置的好文档?
抱歉,我从手册页、维基百科等中不太清楚。
我理解层 0 作为权威时间源和层 1 作为连接服务器的概念。但是,对于在第 1 层时间服务器和最终桌面之间可能有额外跃点的更大网络,我不确定应该考虑什么。您是否会像在 traceroute 中看到的那样,每跳都会增加层数……或者这些主机是层数 2,而不管网络“距离”如何。
默认情况下,NTPd 侦听 UDP 端口 123(所有 IP 地址)。这是否需要仅更新服务器时间?
如果有必要监听一个地址,应该使用哪个地址?它可以侦听的可能地址是:
为什么它甚至必须监听本地主机(127.0.0.1 和 ::1)?没有人可以访问该地址上的服务器。
要将 NTPd 绑定到单个地址,-I可以使用该选项。对于我的 Debian 盒子,我必须编辑/etc/default/ntp,并替换-g为:
-g -I 1.2.3.4 -I 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
这会导致 NTPd 侦听公共地址 1.2.3.4(用您自己的地址替换)和 127.0.0.1。
我当前的系统明显偏离 hwclock 和 ntpd。我在网上和SF上查看了许多论坛和帖子,但没有找到合适的解决方案。
这是我的 ntpq -pn 输出:
轮询到达延迟偏移抖动时的远程重新定义 ================================================== ============================ 122.226.192.4 66.220.9.122 2 u 30 64 3 53.734 146507. 127822. 120-88-46-10.sn 158.43.128.33 2 u 33 64 3 150.373 12823.5 127821。 suisho.attritio 133.100.9.2 2 u 29 64 3 34.351 148556. 133910。 123.146.124.27 61.153.197.226 3 u 27 64 3 21.123 152572. 133909. 114.80.81.1 204.152.184.72 2 u 29 64 3 55.605 148520. 129851.
到目前为止,我的 'hwclock' 说:
Fri 25 Mar 2011 03:27:06 PM CST -0.048504 seconds
我的“约会”说:
Fri Mar 25 15:21:17 CST 2011 …
我正在尝试在我的机器上配置 NTP,但系统似乎没有读取我设置的参数。下面是我的/etc/ntp.conf文件。(我应用了最基本的配置来排除其他问题)
server 10.45.68.47
server 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
设置完上述配置后,我通过执行以下操作重新启动 ntpd 进程:
service ntpd restart
Run Code Online (Sandbox Code Playgroud)
然后我得到以下输出:
Shutting down ntpd: [ OK ]
ntpd: Synchronizing with time server: [FAILED]
Starting ntpd: [ OK ]
Run Code Online (Sandbox Code Playgroud)
此外,我可以在以下内容中看到/var/etc/messages:
Apr 2 10:54:07 hsystem1a ntpd[21067]: ntpd exiting on signal 15
Apr 2 10:54:07 hsystem1a ntpdate[21537]: can't find host ntpServer1
Apr 2 10:54:07 hsystem1a ntpdate[21537]: can't find host ntpServer2
Apr 2 10:54:07 hsystem1a ntpdate[21537]: no servers can be used, exiting
Run Code Online (Sandbox Code Playgroud)
因此,它似乎ntpServer1和ntpServer2正在从某个地方,而不是我所配置的IP地址读取/etc/ntp.conf …
NTP 文档说:
在通常情况下,ntpd 会以小步长调整时钟,以便时间刻度有效地连续且没有间断 - http://doc.ntp.org/4.1.0/ntpd.htm
然而,这完全不是我在实践中注意到的。如果我手动将系统时间向后或向前更改 5 或 10 秒然后开始ntpd,我会注意到它会一次性调整时钟。
例如,使用此代码:
#!/usr/bin/env python
import time
last = time.time()
while True:
time.sleep(1)
print time.time() - last
last = time.time()
Run Code Online (Sandbox Code Playgroud)
当我第一次更改时间时,我会注意到以下内容:
1.00194311142 8.29711604118 1.0010509491
然后当我启动 NTPd 时,我会看到如下内容:
1.00194311142 -8.117301941 1.0010509491
有没有办法强制ntpd以较小的步骤进行调整?
ntpd 抱怨它无法访问自己的日志
# ntpd -qgddd
...
11 Sep 16:23:00 ntpd[7262]: can't open /var/log/ntpstats/peerstats.20130911: Permission denied
...
11 Sep 16:23:01 ntpd[7262]: can't open /var/log/ntpstats/peerstats.20130911: Permission denied
...
11 Sep 16:23:01 ntpd[7262]: can't open /var/log/ntpstats/loopstats.20130911: Permission denied
Run Code Online (Sandbox Code Playgroud)
strace 表示同意
open("/var/log/ntpstats/loopstats.20130911", O_WRONLY|O_CREAT|O_APPEND, 0666) = -1 EACCES (Permission denied)
Run Code Online (Sandbox Code Playgroud)
根据 syslog apparmor 阻止它这样做
[526597.819210] type=1400 audit(1378909374.692:91): apparmor="DENIED" operation="open" parent=1013 profile="/usr/sbin/ntpd" name="/usr/local/sbin/" pid=7262 comm="ntpd" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
[526597.819277] type=1400 audit(1378909374.692:92): apparmor="DENIED" operation="open" parent=1013 profile="/usr/sbin/ntpd" name="/usr/local/bin/" pid=7262 comm="ntpd" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
[526597.819330] type=1400 audit(1378909374.692:93): …Run Code Online (Sandbox Code Playgroud) 我需要知道当前日期/时间在基于 Busybox 的小型嵌入式 Linux 系统中是否可靠。
我正在运行 Busybox ntpd,但显然没有程序可以查询状态。
在更传统的 Linux 安装中,我会使用 ntpdc、ntpq、ntpstat 甚至 timedatectl,但这些在 Busybox/Buildroot 系统上都不可用。
我还可以做些什么?