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

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

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

然而,我的电脑直到我登录后才连接到互联网(另外还需要 5 到 10 秒的时间)。

我该如何设置它才能做到这一点?

答案1

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

timedatectl status

应该告诉你。

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

sudo apt-get install ntp

将设置一切与 Ubuntu 的 NTP 服务器同步。

如果你确实只想在启动时同步一次时间并且不再同步(直到下次启动),请参见例如mfisch 的回答。但同样,我们不建议这么做,而且也很少有理由认为这样做是有益的。

答案2

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

提供了使用时间服务器的选项。如果您选中它并且未安装 NTP,它会询问您是否要安装它。只需单击“是”,然后让它完成工作 :)

答案3

您可以使用ntpdate.at 可能已经安装,但是ntpdate可能不是。(apt-get install ntpdate)。

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

#!/bin/bash
ntpdate pool.ntp.org

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

at -f ~/update_time.sh now + 1 minute

这应该能满足你的要求。你可以更改延迟通常是5分钟、10分钟等等。

编辑:我刚刚意识到你需要以 root 身份运行ntpdate。你需要在我提到的 update_time.sh 脚本上设置 SUID 位。你可以通过从命令中运行此命令来执行此操作(只需运行一次):

sudo chmod 4711 update_time.sh
sudo chown root update_time.sh

答案4

从 Ubuntu 16.04 开始,timedatectl / timesyncd(属于 systemd 的一部分)取代了大部分 ntpdate / ntp。请参阅时间同步

您可能需要使用以下方法激活时间同步:

$ sudo timedatectl set-ntp on

如果你想使用 chrony:

  • 如果您需要一次性同步,请使用:$ chronyd -q

  • 如果您需要一次性时间检查,无需设置时间使用:$ chronyd -Q

  • 对于持续同步,推荐的解决方案是 chrony:

慢性(d)

NTP 守护进程 chronyd 会计算系统时钟的漂移和偏移并不断调整它,因此不会出现可能导致日志不一致等情况的较大修正。成本是一点处理能力和内存,但对于现代服务器来说,这通常可以忽略不计。安装

要安装 chrony,请在终端提示符下输入:

$ sudo apt install chrony

您可能还需要激活

sudo timedatectl 设置ntp

更新:如果上述方法不起作用,另一种方法是设置一个 cron 任务来运行$ chronyd -q

相关内容