欢迎光临
我们一直在努力

如何在Debian 10上设置时间同步

介绍

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

Debian 10内置了时间同步,默认情况下使用ntp软件包提供的标准ntpd时间服务器激活。 在本文中,我们将介绍一些与时间相关的基本命令,验证ntpd是否处于活动状态并连接到对等端,并了解如何激活备用systemd-timesyncd网络时间服务。

先决条件

在开始本教程之前,您将需要一个Debian 10服务器,该服务器具有非root, sudo -enabled用户,如本Debian 10服务器设置教程中所述

第1步 – 导航基本时间命令

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

date
Wed 31 Jul 2019 06:03:19 PM UTC

大多数情况下,您的服务器将默认为UTC时区,如上面的输出所示。 UTC是协调世界时 ,即零度经度的时间。 当您的基础架构跨越多个时区时,始终如一地使用通用时间可以减少混淆。

如果您有不同的要求并需要更改时区,则可以使用timedatectl命令执行此操作。

首先,列出可用的时区:

timedatectl list-timezones

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

现在使用timedatectl set-timezone ,确保将下面突出显示的部分替换为您在列表中找到的时区。 您需要使用带有timedatectl sudo来进行此更改:

sudo timedatectl set-timezone America/New_York

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

date
Wed 31 Jul 2019 02:08:43 PM EDT

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

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

第2步 – 检查ntpd的状态

默认情况下,Debian 10运行标准的ntpd服务器,以使您的系统时间与外部时间服务器池保持同步。 我们可以使用systemctl命令检查它是否正在运行:

sudo systemctl status ntp
 ntp.service - Network Time Service   Loaded: loaded (/lib/systemd/system/ntp.service; enabled; vendor preset: enabled)   Active: active (running) since Wed 2019-07-31 13:57:08 EDT; 17min ago     Docs: man:ntpd(8) Main PID: 429 (ntpd)    Tasks: 2 (limit: 1168)   Memory: 2.1M   CGroup: /system.slice/ntp.service           └─429 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 106:112. . .

active (running)状态表示ntpd正常启动。 要获得有关ntpd状态的更多信息,我们可以使用ntpq命令:

ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter============================================================================== 0.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000 1.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000 2.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000 3.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000+208.67.72.50    152.2.133.55     2 u   12   64  377   39.381    1.696   0.674+198.46.223.227  204.9.54.119     2 u    6   64  377   22.671    3.536   1.818-zinc.frizzen.ne 108.61.56.35     3 u   43   64  377   12.012    1.268   2.553-pyramid.latt.ne 204.123.2.72     2 u   11   64  377   69.922    2.858   0.604+nu.binary.net   128.252.19.1     2 u   10   64  377   35.362    3.148   0.587#107.155.79.108  129.7.1.66       2 u   65   64  377   42.380    1.638   1.014+t1.time.bf1.yah 98.139.133.62    2 u    6   64  377   11.233    3.305   1.118*sombrero.spider 129.6.15.30      2 u   47   64  377    1.304    2.941   0.889+hydrogen.consta 209.51.161.238   2 u   45   64  377    1.830    2.280   1.026-4.53.160.75     142.66.101.13    2 u   42   64  377   29.077    2.997   0.789#horp-bsd01.horp 146.186.222.14   2 u   39   64  377   16.165    4.189   0.717-ntpool1.603.new 204.9.54.119     2 u   46   64  377   27.914    3.717   0.939

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

第3步 – 切换到systemd-timesyncd

可以使用systemd的内置时间同步组件来替换ntpd。 timesyncd是ntpd的轻量级替代品,与systemd集成得更多。 但请注意,它不支持作为时间服务器运行,并且它在用于保持系统时间同步的技术方面稍微不那么复杂。 如果您正在运行复杂的实时分布式系统,您可能希望坚持使用ntpd。

要使用timesyncd,我们必须首先卸载ntpd:

sudo apt purge ntp

然后,启动timesyncd服务:

sudo systemctl start systemd-timesyncd

最后,检查服务的状态以确保它正在运行:

sudo systemctl status systemd-timesyncd
 systemd-timesyncd.service - Network Time Synchronization   Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)  Drop-In: /usr/lib/systemd/system/systemd-timesyncd.service.d           └─disable-with-time-daemon.conf   Active: active (running) since Wed 2019-07-31 14:21:37 EDT; 6s ago     Docs: man:systemd-timesyncd.service(8) Main PID: 1681 (systemd-timesyn)   Status: "Synchronized to time server for the first time 96.245.170.99:123 (0.debian.pool.ntp.org)."    Tasks: 2 (limit: 1168)   Memory: 1.3M   CGroup: /system.slice/systemd-timesyncd.service           └─1681 /lib/systemd/systemd-timesyncd

我们可以使用timedatectl打印出systemd当前对时间的理解:

timedatectl
               Local time: Wed 2019-07-31 14:22:15 EDT           Universal time: Wed 2019-07-31 18:22:15 UTC                 RTC time: n/a                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表示timeyncd已启用并正在运行。

结论

在本文中,我们展示了如何查看系统时间,更改时区,使用ntpd以及切换到systemd的timesyncd服务。 如果您有比我们在此处所述的更复杂的计时需求,您可以参考官方的NTP文档 ,还可以查看NTP池项目 ,这是一个全球性的志愿者团队,提供世界上大部分的NTP基础设施。

赞(0) 打赏
未经允许不得转载:老赵部落 » 如何在Debian 10上设置时间同步
data-ad-format="auto" data-full-width-responsive="true">

评论 抢沙发