如何设置 Ubuntu 以将我的时钟与时间服务器同步?

Nat*_*man 25 ntp

我希望 Ubuntu 在启动时自动将我的系统时钟与时间服务器同步。

但是,直到我登录后,我的 PC 才连接到 Internet(加上 5 - 10 秒,以便更好地测量)。

我怎样才能设置它来做到这一点?

Dav*_*d Z 33

通常建议运行使用 NTP(网络时间协议)的服务来定期将计算机的时钟与服务器同步。在 Ubuntu 的最新版本中(至少从 18.10 开始,或者可能更早,但我不确定),这是systemd-timesyncd由默认安装和启用的服务处理的,因此无需执行任何特殊操作。如果服务可用并处于活动状态,则运行

timedatectl status
Run Code Online (Sandbox Code Playgroud)

应该告诉你。

对于旧版本的 Ubuntu,您可以按照说明设置 NTP 守护进程。有多种选择,但“标准”之一在包装中ntp。根据链接页面上的说明,

sudo apt-get install ntp
Run Code Online (Sandbox Code Playgroud)

将设置所有内容以与 Ubuntu 的 NTP 服务器同步。

如果您真的只想在启动时同步时间一次,然后再也不同步(直到下一次启动),请参阅例如mfisch 的回答。但同样,这不是推荐的,而且很少有任何理由它会有益。

  • 我认为总的来说,他最好让 ntpd 始终运行,并且在他不在线时连接失败,这绝不是有害的。话虽如此,我的方法也应该有效;) (3认同)

Lit*_*awa 9

如果您转到“系统->管理->时间和日期”,您将获得一个用于设置日期/时间的 GUI。

提供了使用时间服务器的选项。如果你勾选它并且没有安装NTP,它会询问你是否要安装它。只需点击“是”,让它完成它的工作:)


mfi*_*sch 6

您可以使用atntpdate执行此操作。at 可能已经安装,但ntpdate可能没有。(apt-get install ntpdate)。

首先创建一个运行 ntpdate 的小脚本,我们将其命名为 update_time.sh。

#!/bin/bash
ntpdate pool.ntp.org
Run Code Online (Sandbox Code Playgroud)

在您的 .bash_login 文件(您可能需要创建)中添加以下内容:

at -f ~/update_time.sh now + 1 minute
Run Code Online (Sandbox Code Playgroud)

那应该做你想做的。您可以将at使用的延迟更改为 5 分钟、10 分钟等。

编辑:我刚刚意识到您需要以 root 身份运行ntpdate. 您需要在我提到的 update_time.sh 脚本上设置 SUID 位。您可以通过从命令运行它来做到这一点(只需要运行一次):

sudo chmod 4711 update_time.sh
sudo chown root update_time.sh
Run Code Online (Sandbox Code Playgroud)

  • 为什么使用`at`?如果你要自动运行 `ntpdate`,为什么不安装 `ntp` 服务呢? (2认同)