如何保持正确的时间,如何使用 NTP 并在不滥用时间服务器的情况下保持计算机同步。
--卡拉
有用的原始链接
请访问文章末尾的“原始链接”获取可点击的文内链接、完整原始图片及相关文章。
致谢
编译自 |
作者 |卡拉
译者 | qhwdw 翻译总数:100 贡献时间:140 天
如何保持正确的时间,如何使用 NTP 并在不滥用时间服务器的情况下保持计算机同步。
现在几点了?
Linux 在告诉你时间方面非常奇怪。你可能认为你正在使用 time 命令来告诉你时间,但事实并非如此,因为 time 只是一个计时器,用于测量进程运行了多长时间。要获取时间,你需要运行 date 命令。如果你想查看更多日期,你可以运行 cal 命令。文件上的时间戳也是一个令人困惑的区域,因为它通常有两个不同的默认值,具体取决于你的发行版:以下是来自 16.04 LTS 的一个示例:
$ ls -l
drwxrwxr-x 5 carla carla 4096 Mar 27 2017 stuff
drwxrwxr-x 2 carla carla 4096 Dec 8 11:32 things
-rw-rw-r-- 1 carla carla 626052 Nov 21 12:07 fatpdf.pdf
-rw-rw-r-- 1 carla carla 2781 Apr 18 2017 oddlots.txt
有些显示年份,有些显示时间,这会使您的文件更加混乱。如果您的文件少于六个月,GNU 默认会显示时间而不是年份。我认为这可能有原因。如果您的 Linux 是这样的,请尝试使用 ls -l --time-style=long-iso 命令以相同的方式按字母顺序显示时间戳。请参阅如何更改 Linux 日期和时间:简单命令[1] 以了解在 Linux 上管理时间的各种方法。
检查当前设置
NTP - 网络时间协议,是保持计算机时间正确的老式方法。ntpd 是 NTP 守护程序,它通过定期查询公共时间服务器来根据需要调整计算机的时间。它是一种简单、轻量级的协议,在使用其基本功能时非常容易设置。通过使用 -.,它已经“完成了 NTP 的工作”,可以用作 ntpd 的客户端。
在我们开始“处理”NTP之前,让我们花点时间检查当前时间设置是否正确。
你的系统上有(至少)两个时钟:系统时间——由 Linux 内核管理,第二个是你主板上的硬件时钟,也被称为实时时钟(RTC)。当你安装新的 Linux 时,在某些图形化时间管理器中,会询问你是否将你的 RTC 时区设置为 UTC(协调世界时),因为所有时区和夏令时都是基于 UTC 的。你可以使用命令来检查:
$ sudo hwclock --debug
hwclock from util-linux 2.27.1
Using the /dev interface to the clock.
Hardware clock is on UTC time
Assuming hardware clock is kept in UTC time.
Waiting for clock tick...
...got clock tick
Time read from Hardware Clock: 2018/01/22 22:14:31
Hw clock time : 2018/01/22 22:14:31 = 1516659271 seconds since 1969
Time since last adjustment is 1516659271 seconds
Calculated Hardware Clock drift is 0.000000 seconds
Mon 22 Jan 2018 02:14:30 PM PST .202760 seconds
时钟处于 UTC 时间表示您的计算机的 RTC 使用 UTC 时间,尽管它会将该时间转换为您的本地时间。如果设置为本地时间,则将显示时钟处于本地时间。
您应该有一个 /etc/ 文件。如果没有,请使用以下命令将您的 RTC 同步到系统时间,
$ sudo hwclock -w
此命令将生成类似于以下内容的文件:
$ cat /etc/adjtime
0.000000 1516661953 0.000000
1516661953
UTC
新发明的方法是运行命令,它不需要 root 权限:
$ timedatectl
Local time: Mon 2018-01-22 14:17:51 PST
Universal time: Mon 2018-01-22 22:17:51 UTC
RTC time: Mon 2018-01-22 22:17:51
Time zone: America/Los_Angeles (PST, -0800)
Network time on: yes
NTP synchronized: yes
RTC in local TZ: no
RTC in local TZ:否表示它使用 UTC 时间。那么如何将其更改为使用本地时间?有很多方法可以做到这一点。最简单的方法是使用图形配置工具,例如 YaST。您还可以使用:
$ timedatectl set-local-rtc 0
或者编辑 /etc/ 并将 UTC 替换为 LOCAL。
- 客户
现在,我已经累了,但我们才刚刚进入真正令人兴奋的部分。谁能想到计时是如此复杂?我们甚至还没有触及表面;阅读 man 8 以了解计算机如何计时的详细信息。
提供了一个客户端,可以查询远程时间服务器并调整本地系统时间。在 /etc/<time>/.conf 中配置您的(时间)服务器。大多数 Linux 发行版都提供了指向它们维护的时间服务器的默认配置,例如:
[Time]
#NTP=
#FallbackNTP=0.fedora.pool.ntp.org 1.fedora.pool.ntp.org
您可以通过在 NTP= 行中输入空格分隔的服务器列表来输入要使用的其他时间服务器,例如您自己的本地 NTP 服务器。(不要忘记取消注释此行。)NTP= 行上的任何内容行上的所有配置项都将被覆盖。
如果你不想使用它怎么办?那么你将需要NTP。
配置NTP服务器和客户端
配置您自己的 LAN NTP 服务器是一种很好的做法,这样您的计算机就不需要不断查询公共 NTP 服务器。大多数 Linux 上的 NTP 都来自 ntp 包,它通常在 /etc/ntp .conf 文件中提供,用于配置时间服务器。请参阅 NTP 时间服务器池 [2] 以找到适合您地区的 NTP 服务器池。然后在您的 /etc/ntp.conf 中输入 4 - 5 个服务器,每个服务器一个。在一行中:
driftfile /var/ntp.drift
logfile /var/log/ntp.log
server 0.europe.pool.ntp.org
server 1.europe.pool.ntp.org
server 2.europe.pool.ntp.org
server 3.europe.pool.ntp.org
告诉 ntpd 它需要保存信息,这些信息将用于在启动时快速将您的系统时钟与时间服务器同步。日志也将保存在其自己的目录中,而不是转储到。如果您的 Linux 发行版默认提供这些文件,请使用它们。
现在启动守护进程;在大多数主流 Linux 发行版中,这是 sudo start ntpd。让它运行几分钟,然后再次检查其状态:
$ ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================
+dev.smatwebdesi 192.168.194.89 3 u 25 64 37 92.456 -6.395 18.530
*chl.la 127.67.113.92 2 u 23 64 37 75.175 8.820 8.230
+four0.fairy.mat 35.73.197.144 2 u 22 64 37 116.272 -10.033 40.151
-195.21.152.161 195.66.241.2 2 u 27 64 37 107.559 1.822 27.346
我不知道这一切意味着什么,但重要的是,您的守护进程现在正在与时间服务器通信,这正是我们所需要的。您可以通过运行 sudo ntpd 永久启用它。Linux 未使用,因此您的家庭作业是找出如何运行 ntpd。
现在,您可以在 LAN 上设置其他计算机,以便它们使用您的本地 NTP 服务器,或者在其上安装 NTP 并输入您的本地 NTP 服务器。
NTP 服务器正遭受攻击,需求也在不断增加。您可以通过运行自己的公共 NTP 服务器来提供帮助。下周我们将学习如何运行自己的公共服务器。
通过 Linux 基金会和 edX 提供的免费课程“Linux 简介” [3] 了解有关 Linux 的更多信息。
通过:
作者:CARLA[5] 译者:qhwdw 校对:wxy
本文由LCTT原创编译,Linux中国荣幸推出
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。