介绍
准确的时间保持已成为现代软件部署的关键组成部分,无论是确保日志以正确的顺序记录,还是正确应用数据库更新,同步时间可能会导致错误,数据损坏和其他难以调试的问题。
Ubuntu 18.04 具有内置和默认启用时间同步,使用 systemd 的 timesyncd 服务. 在本文中,我们将看看一些基本的时间相关的命令,验证 timesyncd 是否活跃,并学习如何安装替代网络时间服务。
前提条件
在开始本教程之前,您将需要一个 Ubuntu 18.04 服务器,具有非 root, sudo 启用的用户,如在 此 Ubuntu 18.04 服务器设置教程中所述。
导航基本时间指令
在您的服务器上查找时间的最基本命令是日期
。任何用户都可以输入此命令来打印日期和时间:
1date
1[secondary_label Output]
2Tue Jul 10 14:48:52 UTC 2018
最常见的是,您的服务器将默认设置为 UTC 时区,如上文所示。UTC 是 Coordinated Universal Time,即零度长度的时间。
如果您有不同的要求,并且需要更改时区,您可以使用timedatectl
命令来做到这一点。
首先,列出可用的时区:
1timedatectl list-timezones
一个时区列表将打印到你的屏幕上。你可以按SPACE
按下页面,然后按b
按上页面.一旦你找到正确的时区,请记住它,然后键入q
离开列表。
现在用timedatectl set-timezone
设置时区,确保您用您在列表中发现的时区替换下面的突出部分,您需要使用sudo
和timedatectl
来进行此更改:
1sudo timedatectl set-timezone America/New_York
您可以通过再次运行日期
来验证您的更改:
1date
1[secondary_label Output]
2Tue Jul 10 10:50:53 EDT 2018
时区缩写应该反映新选择的值。
现在我们知道如何检查时钟和设置时区,让我们确保我们的时间正确同步。
使用 timedatectl 控制 timesyncd
直到最近,大多数网络时间同步都是通过网络时间协议daemon_或 ntpd进行处理的,该服务连接到一大堆其他NTP服务器,为其提供持续和准确的时间更新。
Ubuntu 的默认安装现在使用 timesyncd 而不是 ntpd。 timesyncd 连接到同一时间服务器并以大致相同的方式工作,但更轻,更与 systemd 和 Ubuntu 的低级别工作更加集成。
我们可以通过运行timedatectl
来查询 timesyncd的状态,没有参数. 在这种情况下,您不需要使用sudo
:
1timedatectl
1[secondary_label Output]
2 Local time: Tue 2018-07-10 10:54:12 EDT
3 Universal time: Tue 2018-07-10 14:54:12 UTC
4 RTC time: Tue 2018-07-10 14:54:12
5 Time zone: America/New_York (EDT, -0400)
6 System clock synchronized: yes
7systemd-timesyncd.service active: yes
8 RTC in local TZ: no
这会打印本地时间、通用时间(如果您没有从UTC时区切换,可能与本地时间相同),以及某些网络时间状态信息。 系统时钟同步:是的'表示时间已成功同步,而
systemd-timesyncd.service 活跃:是的'表示 timesyncd 已启用并运行。
如果 timesyncd 不活跃,请用 timedatectl 打开它:
1sudo timedatectl set-ntp on
执行timedatectl
再次确认网络时间状态 实际同步可能需要一分钟,但最终网络时间:
和NTP同步:
都应该读到是
。
切换到 ntpd
虽然 timesyncd 对于大多数用途都很好,但一些对时间中最微小的干扰非常敏感的应用程序可能会通过 ntpd 更好地提供服务,因为它使用更复杂的技术来不断和逐步保持系统时间。
在安装 ntpd 之前,我们应该关闭 timesyncd:
1sudo timedatectl set-ntp no
請確定 timesyncd 已關閉:
1timedatectl
在输出中寻找systemd-timesyncd.service active: no
这意味着timesyncd
已经停止了,我们现在可以安装ntp
包与apt
:
1sudo apt update
2sudo apt install ntp
ntpd 安装后会自动启动,您可以查询 ntpd 状态信息,以验证一切正常工作:
1ntpq -p
1[secondary_label Output]
2 remote refid st t when poll reach delay offset jitter
3==============================================================================
4 0.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
5 1.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
6 2.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
7 3.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
8 ntp.ubuntu.com .POOL. 16 p - 64 0 0.000 0.000 0.000
9+ec2-52-0-56-137 216.239.35.0 2 u 16 64 1 7.872 -2.137 1.485
10+66.220.10.2 129.6.15.30 2 u 12 64 1 65.204 3.740 2.686
11+block.steinhoff 209.51.161.238 2 u 11 64 1 33.364 1.710 3.586
12+eterna.binary.n 216.229.0.50 3 u 11 64 1 35.330 2.821 2.839
13+2604:a880:800:1 209.51.161.238 2 u 14 64 1 0.394 0.386 2.462
14+ec2-52-6-160-3. 130.207.244.240 2 u 11 64 1 8.150 2.050 3.053
15+mx.danb.email 127.67.113.92 2 u 13 64 1 63.868 1.539 2.240
16*hydrogen.consta 129.6.15.28 2 u 12 64 1 2.989 1.755 2.563
17+ntp-3.jonlight. 127.67.113.92 2 u 10 64 1 64.561 2.122 3.593
18+undef.us 45.33.84.208 3 u 12 64 1 33.508 1.631 3.647
19+ntp-3.jonlight. 127.67.113.92 2 u 8 64 1 64.253 2.645 3.174
20 2001:67c:1560:8 145.238.203.14 2 u 22 64 1 71.155 -1.059 0.000
21+test.diarizer.c 216.239.35.4 2 u 11 64 1 64.378 4.648 3.244
22 2001:67c:1560:8 145.238.203.14 2 u 18 64 1 70.744 -0.964 0.000
23 alphyn.canonica 132.246.11.231 2 u 17 64 1 7.973 -0.170 0.000
24+vps5.ctyme.com 216.218.254.202 2 u 10 64 1 65.874 1.902 2.608
ntpq
是 ntpd 的查询工具. -p
标志要求有关 ntpd 已连接的 NTP 服务器(或 peers)的信息. 您的输出将略有不同,但应该列出默认的 Ubuntu 池服务器以及其他一些。
结论
在这篇文章中,我们展示了如何查看系统时间,更改时区,使用Ubuntu的默认 timesyncd,并安装 ntpd. 如果您有比我们这里所涵盖的更复杂的计时需求,您可以参考官方NTP文档(https://www.eecis.udel.edu/~mills/ntp/html/index.html),并查看NTP池项目(http://www.pool.ntp.org/),一个全球性的志愿者群体,提供世界上大部分NTP基础设施。