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

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

介绍

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

幸运的是,Ubuntu 20.04 内置了时间同步功能,默认使用 systemdtimesyncd 服务激活。 在本文中,您将练习一些与时间相关的通用命令,验证 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 设置时区,方法是将突出显示的部分替换为您在列表中找到的时区。 您需要使用 sudotimedatectl 进行此更改:

sudo timedatectl set-timezone America/New_York

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

date
OutputThu Aug 5 11:56:01 EDT 2021

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

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

timedatectl 控制 timesyncd

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

但是现在使用 Ubuntu 的默认安装,您可以使用 timesyncd 而不是 ntpdtimesyncd 通过连接到相同的时间服务器以类似的方式工作,但它是轻量级的,并且与 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

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

结论

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