我在基于 ARM 的嵌入式系统上运行 Ubuntu,该系统缺少电池支持的 RTC。唤醒时间在 1970 年的某个时间。因此,我使用 NTP 服务将时间更新为当前时间。
我将以下行添加到/etc/rc.local文件中:
sudo ntpdate -s time.nist.gov
Run Code Online (Sandbox Code Playgroud)
但是,启动后,仍然需要几分钟才能更新时间,在此期间我无法有效地使用tar和make。
如何在任何给定时间强制更新时钟?
更新 1:以下(感谢 Eric 和 Stephan)在命令行中工作正常,但在放入时无法更新时钟/etc/rc.local:
$ date ; sudo service ntp stop ; sudo ntpdate -s time.nist.gov ; sudo service ntp start ; date
Thu Jan 1 00:00:58 UTC 1970
* Stopping NTP server ntpd [ OK ]
* Starting NTP server [ OK ]
Thu Feb 14 18:52:21 UTC 2013
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
更新 2:我尝试遵循针对第一次更新而提出的一些建议,但似乎实际上没有按要求完成这项工作。这是我尝试过的: …
我的时钟已关闭,因此我想使用ntpdate. 我尝试了几个不同的 NTP 服务器,但由于某种原因,我总是收到以下错误消息:
$ sudo ntpdate ntp.ubuntu.com
4 Mar 12:27:35 ntpdate[1258]: no server suitable for synchronization found
$ sudo ntpdate pool.ntp.org
4 Mar 12:27:50 ntpdate[1267]: no server suitable for synchronization found
$ sudo ntpdate de.pool.ntp.org
4 Mar 12:28:01 ntpdate[1273]: no server suitable for synchronization found
$ sudo ntpdate us.pool.ntp.org
4 Mar 12:28:12 ntpdate[1276]: no server suitable for synchronization found
Run Code Online (Sandbox Code Playgroud)
我查看了相关问题,但没有一个能解决我的问题:
ntpd守护进程的冲突。我根本没有安装这个ntp包(包括ntpd守护进程)。通过单击“系统设置 -> 时间和日期 -> 自动从 Internet”,我可以从 Internet 同步时间。
但是,我发现我没有ntpd守护进程(甚至没有安装)。那么同步是如何工作的呢?
我想配置我的 Ubuntu 12.04 服务器以将其时钟与特定的 NTP 服务器同步。在哪里设置这个?
set-ntp在 Ubuntu 20.04 中,我发现由于以下错误而无法更改。
# timedatectl set-ntp true\nFailed to set ntp: NTP not supported\nRun Code Online (Sandbox Code Playgroud)\n有办法解决吗?
\n更新:
\n看来systemd-timesyncd启动命令失败了。
$ systemctl status systemd-timesyncd\n\xe2\x97\x8f systemd-timesyncd.service\n Loaded: masked (Reason: Unit systemd-timesyncd.service is masked.)\n Active: inactive (dead)\n$ sudo systemctl start systemd-timesyncd\nFailed to start systemd-timesyncd.service: Unit systemd-timesyncd.service is masked.\nRun Code Online (Sandbox Code Playgroud)\n解决方案
\n使用该命令,sudo timedatectl set-ntp yes问题现已解决。
我希望 Ubuntu 在启动时自动将我的系统时钟与时间服务器同步。
但是,直到我登录后,我的 PC 才连接到 Internet(加上 5 - 10 秒,以便更好地测量)。
我怎样才能设置它来做到这一点?
当我ntpdate自己运行时,我得到以下输出:
6 月 8 日 15:47:46 ntpdate[31251]:无法使用服务器,退出
如果我用-q ntp.ubuntu.com开关运行它,它似乎查询得很好。
我一直在寻找许多文件,我发现的最相关的文件是/etc/default/ntpdate,但是,即使NTPDATE_USE_CONF设置为 no,我也无法理解/查看此错误是如何发生的
有任何想法吗?
更新 -
看起来ntpdate-debian工作正常并且是使用的实际命令/etc/default/ntpdate,但这并没有回答主要问题,我仍然找不到它......
当我尝试使用 NTP 同步时间时。使用以下命令
sudo ntpdate -b pool.ntp.org
Run Code Online (Sandbox Code Playgroud)
我收到这个错误,说NTP socket is in use。如何解决这个问题?
18 Jan 05:53:49 ntpdate[21340]: the NTP socket is in use, exiting
Run Code Online (Sandbox Code Playgroud) 为了在 Ubuntu 系统上保持时间准确,您可以:
ntpd(网络时间协议守护进程),它将一直运行并在时钟漂移时不断调整系统时间。或者:ntpdate定期调用(例如从cron)问题:
当ntpd守护进程运行时,文件:/var/lib/ntp/ntp.drift会定期更新。例子:
17:20 hostname 118 ~> ls -l /var/lib/ntp/ntp.drift
-rw-r--r-- 1 ntp ntp 7 May 20 16:46 /var/lib/ntp/ntp.drift
# So it looks like it was last updated ~34 minutes ago
Run Code Online (Sandbox Code Playgroud)
该文件中有一个数字,例如,查看 4 个虚拟主机,我分别找到了这些值:
-22.086
-10.214
-13.669
6.045
Run Code Online (Sandbox Code Playgroud)
我假设这些是每天的秒数(?),但不确定。 man ntpd提到了一个不同的漂移文件/etc/ntp.drift,它似乎不存在。手册页没有解释用于漂移的单位。
问题:
/etc/ntp.drift实际上/var/lib/ntp/ntp.drift在Ubuntu?谢谢!