如何在 Ubuntu 16.04 上设置时间同步

介绍

准确的时间保持已成为现代软件部署的关键组成部分,无论是确保日志以正确的顺序记录,还是正确应用数据库更新,同步时间可能会导致错误,数据损坏和其他难以调试的问题。

Ubuntu 16.04 具有内置和默认启用时间同步,使用 systemd 的 timesyncd 服务. 在本文中,我们将看看一些基本的时间相关的命令,验证 timesyncd 是否活跃,并学习如何安装替代网络时间服务。

前提条件

在开始本教程之前,您将需要一个 Ubuntu 16.04 服务器,具有非 root, sudo 启用的用户,如在 此 Ubuntu 16.04 服务器设置教程中所述。

导航基本时间指令

在您的服务器上查找时间的最基本命令是日期。任何用户都可以输入此命令来打印日期和时间:

1date
1[secondary_label Output]
2Wed Apr 26 17:44:38 UTC 2017

最常见的是,您的服务器将默认设置为 UTC 时区,如上文所示。UTC 是 Coordinated Universal Time,即零度长度的时间。

如果您有不同的要求,并且需要更改时区,您可以使用timedatectl命令来做到这一点。

首先,列出可用的时区:

1timedatectl list-timezones

一个时区列表将打印到你的屏幕上。你可以按SPACE按下页面,然后按b按上页面.一旦你找到正确的时区,请记住它,然后键入q离开列表。

现在用timedatectl set-timezone设置时区,确保您用您在列表中发现的时区替换下面的突出部分,您需要使用sudotimedatectl来进行此更改:

1sudo timedatectl set-timezone America/New_York

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

1date
1[secondary_label Output]
2Wed Apr 26 13:55:45 EDT 2017

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

现在我们知道如何检查时钟和设置时区,让我们确保我们的时间正确同步。

使用 timedatectl 控制 timesyncd

直到最近,大多数网络时间同步都是由网络时间协议daemon_或 ntpd处理的,该服务器连接到一大堆其他NTP服务器,为其提供持续和准确的时间更新。

Ubuntu 的默认安装现在使用 timesyncd 而不是 ntpd。 timesyncd 连接到同一时间服务器并以大致相同的方式工作,但更轻,更与 systemd 和 Ubuntu 的低级别工作更加集成。

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

1timedatectl
1[secondary_label Output]
2Local time: Wed 2017-04-26 17:20:07 UTC
3  Universal time: Wed 2017-04-26 17:20:07 UTC
4        RTC time: Wed 2017-04-26 17:20:07
5       Time zone: Etc/UTC (UTC, +0000)
6 Network time on: yes
7NTP synchronized: yes
8 RTC in local TZ: no

这会打印本地时间、通用时间(如果您没有从UTC时区切换,可能与本地时间相同),以及某些网络时间状态信息。 网络时间:是的 意味着 timesyncd 已启用,而 NTP 同步:是的 表示时间已成功同步。

如果 timesyncd 未启用,请使用 timedatectl 启用它:

1sudo timedatectl set-ntp on

执行timedatectl再次确认网络时间状态 实际同步可能需要一分钟,但最终网络时间:NTP同步:都应该读到

切换到 ntpd

虽然 timesyncd 对于大多数用途都很好,但一些对时间中最微小的干扰非常敏感的应用程序可能会通过 ntpd 更好地提供服务,因为它使用更复杂的技术来不断和逐步保持系统时间。

在安装 ntpd 之前,我们应该关闭 timesyncd:

1sudo timedatectl set-ntp no

請確定 timesyncd 已關閉:

1timedatectl

在输出中寻找网络时间:不,这意味着timesyncd已经停止了,我们现在可以安装ntp包与apt-get:

1sudo apt-get install ntp

ntpd 安装后会自动启动,您可以查询 ntpd 状态信息,以验证一切正常工作:

1sudo ntpq -p
 1[secondary_label Output]
 2remote refid st t when poll reach delay offset jitter
 3==============================================================================
 40.ubuntu.pool.n .POOL. 16 p    -   64 0 0.000 0.000 0.000
 51.ubuntu.pool.n .POOL. 16 p    -   64 0 0.000 0.000 0.000
 62.ubuntu.pool.n .POOL. 16 p    -   64 0 0.000 0.000 0.000
 73.ubuntu.pool.n .POOL. 16 p    -   64 0 0.000 0.000 0.000
 8ntp.ubuntu.com  .POOL. 16 p    -   64 0 0.000 0.000 0.000
 9-makaki.miuku.ne 210.23.25.77 2 u 45 64 3 248.007   -0.489 1.137
10-69.10.161.7 144.111.222.81 3 u 43 64 3 90.551 4.316 0.550
11+static-ip-85-25 130.149.17.21 2 u 42 64 3 80.044   -2.829 0.900
12+zepto.mcl.gg 192.53.103.108 2 u 40 64 3 83.331   -0.385 0.391

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基础设施。

Published At
Categories with 技术
comments powered by Disqus