如何在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基础设施的全球志愿者团体.