无法使用NTP同步时间

当我尝试使用NTP同步时间时,使用以下命令:
sudo ntpdate -b pool.ntp.org

我遇到了一个错误,显示“NTP套接字正在使用”。如何修复这个问题?
18 Jan 05:53:49 ntpdate[21340]: the NTP socket is in use, exiting
4个回答

NTP套接字正在使用中,退出。
这表示您正在运行一个NTP守护程序,通常是通过ntp软件包。您不能同时有两个应用程序调整时钟。
1. 首先停止当前运行的NTP守护进程: ``` sudo service ntp stop ```
2. 执行您的ntpdate命令。
3. 再次启动NTP守护进程: ``` sudo service ntp start ```

背景

NTP守护进程不会进行大幅度的时间调整,但对于非常平滑和微小的过渡非常有用。因此,在正常工作之前,请先使用ntpdate同步时间。您可以像这样查询守护进程的状态:

ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*chime1.surfnet. 194.171.167.130  2 u   59   64    7    3.159   -0.207   0.136
+chime2.surfnet. .GPS.            1 u   59   64    7    6.872   -0.592   0.091
[...]
 ns1.tudelft.nl  .INIT.          16 u    -   64    0    0.000    0.000   0.000
+ev001.tilaa.nl  193.67.79.202    2 u   55   64    7    4.038   -0.613   0.110

Ubuntu默认安装的是openntpd而不是xnptd吗?ntpq来自于xntpd。 - Martin Schröder
@MartinSchröder 你说得对!:) 正在编辑中。谢谢。 - gertvdijk
更正:ntpq是来自ntp参考实现的工具。在90年代和00年代初,它被称为xntpd,现在只称为ntpd或ntpv4。 - dfc
很好的解释 - 我从未知道为什么NTP不会做大跃进。 - Jeremy Hajek
+1 我启用了 ntpd,并期望它能纠正我的时间(与准确时间相差2分钟),作为工作证明。但当然它不会这样做,因为它“不会向前或向后迈出大步”。感谢解释。 - matt freake

如果您遇到如下所示的错误 NTP socket in use

enter image description here

在这种情况下,只需运行。
$ sudo service ntp stop
$ sudo ntpdate pool.ntp.org
$ sudo service ntp start

你会得到

enter image description here

或者只需要运行

sudo ntpdate -u pool.ntp.org

以更新正在运行的ntpd守护程序


3不要鼓励人们在ntpd运行时运行ntpdate。 - dfc
1为什么要发布只有文字的截图呢?复制粘贴“就能用”。;-) - gertvdijk
1+1 对于 -u 选项的赞赏,它避免了停止 ntpd 的麻烦。 - dan carter

一个常见问题是人们发现他们的计算机在指定的夏令时转换时没有更新。一旦意识到,用户尝试使用sudo ntpdate -b pool.ntp.org或类似命令来校正时间,结果发现NTP已经在运行但并未生效。
一般情况下,不能完全依赖NTP在夏令时转换时修正您的时钟。例如,NTP有拒绝设置您的时钟的情况。当搜索NTP问题时会得到大量相关内容,很明显NTP的限制影响了很多人。我相信任何NTP设计决策都有其合理原因,但这并不改变它不能始终按照普通用户的期望工作的事实。 如果某个特定目的对您很重要,请务必检查一下。如果在转换前不久手动设置正确的时间,您可能会在自动夏令时转换方面取得更好的效果。
对于普通用户来说,这是一个难以进行实验的难题,因为每年只有两次夏令时发生。

如果ntp守护程序已安装并运行,您将会得到与此同时无法通过两个程序调整时钟的相同错误。
如果服务正在运行,它将与/etc/ntp.conf中的服务器进行同步,因此时间将会同步。 最好每晚重新启动ntp守护程序,以便如果它在某种情况下停止,每天都会重新启动,可以在crontab中设置。
crontab -e
@daily sudo service ntp restart >> /tmp/time.log

你可以通过以下命令查看服务器同步的详细信息。
ntpq -p