9
6月
2020
Linux时区,使用NTP协议进行计算机时钟同步
10:18

Linux时区,使用NTP协议进行计算机时钟同步

9 6月 2020 10:18

安装发行版时选择系统时区。 将来,您可以配置时间同步(NTP协议)以获得更准确的时间并组织有关其他时区信息的显示。 例如,当莫斯科是早晨时,美国中部已经是深夜了。 本文介绍如何改进时间同步、设置时区以及在屏幕上显示其他时区的时间。

简介

Linux中的时间服务可以通过两种方式进行操作,这两种方式并不互相排斥:

  • 客户端(将此PC的时间与其他精确时间服务器同步)
  • 服务器(用于分发 准确 网络上其他计算机的时间)。

我正在考虑时间客户服务。

目标:
a) 在本地计算机上获得较高的时间精度(小于0.5秒)
b) 实现不同时区时间的显示。

行动计划:

  1. 安装
  2. 发射
  3. 检查

启用ntp客户端

要通过网络同步时间,您需要安装 ntp 客户端和 ntpdate 实用程序:

苏-
apt-get update
apt install ntp

指定时区

首先,您需要检查系统中设置的时区。

ls -l /etc/localtime

对于莫斯科、圣彼得堡和俄罗斯联邦的欧洲部分,将显示一个链接:

/etc/localtime -> /usr/share/zoneinfo/Europe/Moscow

没错。 但您可以将计算机重新配置到不同的时区(如果电脑已移动到另一个区域)。

在Linux Mint中,更改时区的程序称为 time-admin (必须以超级用户 su 权限运行)。 该程序也可以在“开始”-“选项”-“日期和时间”菜单中找到。
时间管理计划

您还可以使用命令行更改时区。 首先,让我们了解一下存在哪些时区,例如欧洲:

ls /usr/share/zoneinfo/Europe/

阿姆斯特丹 布辛根 基辅 摩纳哥 萨拉热窝 瓦杜兹
安道尔 基希讷乌 基洛夫 莫斯科 萨拉托夫 梵蒂冈
阿斯特拉罕 哥本哈根 基辅 尼科西亚 辛菲罗波尔 维也纳
雅典 都柏林 里斯本 奥斯陆 斯科普里 维尔纽斯
贝尔法斯特 直布罗陀 卢布尔雅那 巴黎 索非亚 伏尔加格勒
贝尔格莱德 根西岛 伦敦 波德戈里察 斯德哥尔摩 华沙
柏林 赫尔辛基 卢森堡 布拉格 塔林 萨格勒布
_布拉迪斯拉发岛曼·马德里·里加·地拉内·扎波罗热
布鲁塞尔 伊斯坦布尔 马耳他 罗马 蒂拉斯波尔 苏黎世
布加勒斯特泽西玛丽港萨马拉乌里扬诺夫斯克
布达佩斯 加里宁格勒 明斯克 圣马里诺乌日哥罗德
现在我们创建一个软符号链接,例如到明斯克:

我们查看当前时区

ls -l /etc/localtime

正文“/etc/localtime -> /usr/share/zoneinfo/欧洲/莫斯科

我们将时区更改为明斯克(仅作为示例):

sudo ln -sf /usr/share/zoneinfo/Europe/Minsk /etc/localtime

设置时间同步

要使 ntp 客户端工作,需要满足以下条件: 存在配置文件 /etc/ntp.conf

启动ntp客户端和直接启动客户端的权限。

  1. 配置文件/etc/ntp.conf

    driftfile /var/lib/ntp/ntp.drift

    leapfile /usr/share/zoneinfo/leap-seconds.list

    statistics loopstats peerstats clockstats

    filegen loopstats file loopstats type day enable

    filegen peerstats file peerstats type day enable

    filegen clockstats file clockstats type day enable

    pool 0.ubuntu.pool.ntp.org iburst

    pool 1.ubuntu.pool.ntp.org iburst

    pool 2.ubuntu.pool.ntp.org iburst

    pool 3.ubuntu.pool.ntp.org iburst

    pool ntp.ubuntu.com

    restrict -4 default kod notrap nomodify nopeer noquery limited

    restrict -6 default kod notrap nomodify nopeer noquery limited

    restrict 127.0.0.1

    restrict ::1

    restrict source notrap nomodify noquery

  2. 默认允许启动ntp客户端服务。

可以,但没必要发出命令

 systemctl enable ntp
 systemctl start ntp
 systemctl status ntp

为了让服务重新读取更新的配置(如果您编辑了 /etc/ntp.conf 文件),您需要运行

sudo systemctl restart ntp

监控时间同步客户端

ntpq -pw

显示客户端进行时间同步的ntp服务器列表。 (必须等到程序输出完成)。

如何找出本地计算机与远程时间服务器的时间偏差

使用 ntpq 实用程序。

或者时钟差异

su -
apt-get update
apt install iputils-clockdiff

找出与另一台计算机的时间偏差 - NTP 服务器:

sudo clockdiff 130.149.17.21

sudo clockdiff 1.ru.pool.ntp.org

可以看出偏差,即PC时间不准确为34毫秒:

..................................................

host=130.149.17.21 rtt=34(0)ms/34ms delta=-1ms/-1ms Tue Jun 9 11:38:44 2020

与另一台服务器相比,情况相同,偏差为35毫秒:

clockdiff 91.206.16.3

..................................................

host=91.206.16.3 rtt=35(0)ms/35ms delta=0ms/0ms Tue Jun 9 11:44:57 2020

应该记住,clockdiff 不考虑网络延迟 (ping),它只允许您与另一台计算机比较时间,而不考虑网络上数据包的延迟。

该命令显示更准确的偏差值

ntpq -p

ntpq -pw

其中差异(偏移+-抖动)在短短几毫秒内就可见。

另一种找出时间偏差的方法

https://time.is

在屏幕上显示世界时间

世界时间计划( 全球时间 )Xfce 桌面环境允许您制作一个带有多个时区时间的时钟。
安装 GlobalTime 程序:

sudo apt install xfce4-datetime-plugin

资料来源:



相关出版物