如何在Ubuntu20.04上设置时间同步

来自菜鸟教程
跳转至:导航、​搜索

介绍

准确的计时是现代软件部署不可或缺的一部分。 没有它,您可能会遇到数据损坏、错误和其他难以调试的问题。 时间同步有助于确保您的日志以正确的顺序记录,并且数据库更新得到适当应用。

幸运的是,Ubuntu 20.04 内置了时间同步功能,默认使用 systemd 的 timesyncd 服务激活。 在本文中,您将练习一些与时间相关的通用命令,验证 timesyncd 是否处于活动状态,并安装备用网络时间服务。

先决条件

在开始本教程之前,您需要一个 Ubuntu 20.04 服务器,该服务器具有非 root、启用 sudo 的用户和防火墙,如 this Ubuntu 20.04 server setup tutorial 中所述。

导航基本时间命令

要查看服务器上的时间,您将使用命令 date。 任何用户都可以运行此命令来打印日期和时间:

date

通常,您的服务器将使用默认的 UTC 时区生成输出。

OutputThu Aug 5 15:55:20 UTC 2021

UTC 是 协调世界时 ,即零度经度的时间。 虽然这可能无法反映您当前的时区,但当您的基础设施跨越多个时区时,使用世界时可以防止混淆。

但是,如果要更改时区,可以使用 timedatectl 命令。

首先,运行此命令以生成可用时区列表:

timedatectl list-timezones

时区列表将打印到您的屏幕上。 您可以按 SPACE 向下翻页,按 b 向上翻页。 找到正确的时区后,记下它,然后键入 q 退出列表。

接下来,您可以使用 timedatectl set-timezone 设置时区,方法是将突出显示的部分替换为您在列表中找到的时区。 您需要使用 sudo 和 timedatectl 进行此更改:

sudo timedatectl set-timezone America/New_York

您可以通过再次运行 date 来验证您的更改:

date
OutputThu Aug 5 11:56:01 EDT 2021

时区缩写将反映新选择的值。

现在您已经练习了检查时钟和设置时区,您可以在下一部分中确认您的时间是否正确同步。

用 timedatectl 控制 timesyncd

以前,大多数网络时间同步由 网络时间协议守护进程 或 ntpd 处理。 此服务连接到其他 NTP 服务器池,为它提供持续且准确的时间更新。

但是现在使用 Ubuntu 的默认安装,您可以使用 timesyncd 而不是 ntpd。 timesyncd 通过连接到相同的时间服务器以类似的方式工作,但它是轻量级的,并且与 Ubuntu 上的 systemd 集成得更紧密。

您可以通过不带参数运行 timedatectl 来查询 timesyncd 的状态。 在这种情况下,您不需要使用 sudo:

timedatectl
Output
                     Local time: Thu 2021-08-05 11:56:40 EDT
           Universal time: Thu 2021-08-05 15:56:40 UTC
                 RTC time: Thu 2021-08-05 15:56:41
                Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

该命令打印出本地时间、世界时间(可能与本地时间相同,如果您没有从 UTC 时区切换),以及一些网络时间状态信息。 System clock synchronized: yes表示时间同步成功,NTP service: active表示timesyncd启动并运行。

如果您的输出显示 NTP 服务未激活,请使用 timedatectl 将其打开:

sudo timedatectl set-ntp on

之后再次运行timedatectl确认网络时间状态。 同步可能需要一分钟,但最终 System clock synchronized: 将显示为 yes 并且 NTP service: 将显示为 active。

切换到 ntpd

timesyncd 在大多数情况下都可以使用。 然而,在某些情况下,应用程序可能对任何随时间的干扰都很敏感。 在这种情况下,ntpd 是您可以使用的替代网络时间服务。 ntpd 使用复杂的技术来不断地、逐渐地使系统时间保持在正轨上。

在安装ntpd之前,需要先关闭timesyncd,以免两个服务相互冲突。 您可以通过使用以下命令禁用网络时间同步来执行此操作:

sudo timedatectl set-ntp no

验证时间同步是否已禁用:

timedatectl

检查您的输出是否为 NTP service: inactive。 这意味着 timesyncd 已停止。 现在您已准备好使用 apt 安装 ntp 软件包。

首先,运行 apt update 来刷新你的本地包索引:

sudo apt update

然后,运行 apt install ntp 来安装这个包:

sudo apt install ntp

ntpd 将在安装完成后自动开始。 您可以通过查询 ntpd 的状态信息来验证一切是否正常:

ntpq -p
Output           remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 1.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 2.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 3.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 ntp.ubuntu.com  .POOL.          16 p    -   64    0    0.000    0.000   0.000
+t1.time.bf1.yah 129.6.15.28      2 u   16   64    1   61.766  -20.068   1.964
+puppet.kenyonra 80.72.67.48      3 u   16   64    1    2.622  -18.407   2.407
*ntp3.your.org   .GPS.            1 u   15   64    1   50.303  -17.499   2.708
+time.cloudflare 10.4.1.175       3 u   15   64    1    1.488  -18.295   2.670
+mis.wci.com     216.218.254.202  2 u   15   64    1   21.527  -18.377   2.414
+ipv4.ntp1.rbaum 69.89.207.99     2 u   12   64    1   49.741  -17.897   3.417
+time.cloudflare 10.4.1.175       3 u   15   64    1    1.039  -16.692   3.378
+108.61.73.243   129.6.15.29      2 u   14   64    1   70.060  -16.993   3.363
+ny-time.gofile. 129.6.15.28      2 u   21   64    1   75.349  -18.333   2.763
 golem.canonical 17.253.34.123    2 u   28   64    1  134.482  -21.655   0.000
 ntp3.junkemailf 216.218.254.202  2 u   19   64    1    2.632  -16.330   4.387
 clock.xmission. .XMIS.           1 u   18   64    1   24.927  -16.712   3.415
 alphyn.canonica 142.3.100.2      2 u   26   64    1   73.612  -19.371   0.000
 strongbad.voice 192.5.41.209     2 u   17   64    1   70.766  -18.159   3.481
 chilipepper.can 17.253.34.123    2 u   25   64    1  134.982  -19.848   0.000
 pugot.canonical 145.238.203.14   2 u   28   64    1  135.694  -21.075   0.000

ntpq是ntpd的查询工具。 -p 标志请求有关 ntpd 连接到的 NTP 服务器(或 peers)的信息。 您的输出会略有不同,但会列出默认的 Ubuntu 池服务器以及其他一些服务器。 请记住,ntpd 建立连接可能需要几分钟。

结论

在本文中,您已成功查看系统时间、更改时区、使用 Ubuntu 默认的 timesyncd 服务,并安装了 ntpd。 如果您有高级计时需求,可以参考官方NTP文档,也可以看看NTP池项目,一个提供全球大部分NTP基础设施的全球志愿者团体.