Heim  >  Artikel  >  System-Tutorial  >  Halten Sie die genaue Linux-Zeit ein

Halten Sie die genaue Linux-Zeit ein

WBOY
WBOYOriginal
2024-06-27 13:27:481097Durchsuche

让 Linux 保持精确时间

Wie Sie die richtige Zeit einhalten, wie Sie NTP und Systemd verwenden, um Ihre Computer synchron zu halten, ohne Zeitserver zu missbrauchen.

Wie lange dauert es?

Linux ist seltsam, wenn es darum geht, die Uhrzeit anzuzeigen. Sie denken vielleicht, dass Sie den Befehl time verwenden, um die Zeit anzuzeigen, aber das liegt nicht daran, dass time nur ein Timer ist, der misst, wie lange ein Prozess ausgeführt wurde. Um die Uhrzeit zu erhalten, müssen Sie den Befehl „date“ ausführen. Wenn Sie weitere Datumsangaben anzeigen möchten, können Sie den Befehl „cal“ ausführen. Zeitstempel in Dateien können ebenfalls Verwirrung stiften, da es je nach den Standardeinstellungen Ihrer Distribution zwei verschiedene Möglichkeiten gibt, sie anzuzeigen. Hier ist ein Beispiel aus Ubuntu 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

Einige zeigen das Jahr, andere die Uhrzeit an, wodurch Ihre Datei unübersichtlicher wird. Die GNU-Standardeinstellung besteht darin, die Uhrzeit anstelle des Jahres anzuzeigen, wenn Ihre Datei weniger als sechs Monate alt ist. Ich dachte, es könnte einen Grund dafür geben. Wenn Ihr Linux so ist, versuchen Sie es mit dem Befehl ls -l --time-style=long-iso, um die Zeitstempel auf die gleiche Weise, alphabetisch sortiert, anzuzeigen.

Überprüfen Sie die aktuellen Einstellungen

NTP – Network Time Protocol, die altmodische Methode, die Uhrzeit Ihres Computers korrekt zu halten. ntpd ist der NTP-Daemon, der die Zeit Ihres Computers bei Bedarf anpasst, indem er regelmäßig einen öffentlichen Zeitserver abfragt. Es handelt sich um ein einfaches, leichtgewichtiges Protokoll, das mit seiner Grundfunktionalität sehr einfach einzurichten ist. systemd ist über die „Erledigung des NTP-Jobs“ hinausgegangen, indem es systemd-timesyncd.service verwendet hat, das als Client für ntpd verwendet werden kann.

Bevor wir uns mit NTP „befassen“, nehmen Sie sich etwas Zeit, um zu überprüfen, ob die aktuellen Zeiteinstellungen korrekt sind. Auf Ihrem System gibt es (mindestens) zwei Uhren: die Systemzeit – die vom Linux-Kernel verwaltet wird, und die zweite ist die Hardware-Uhr auf Ihrem Motherboard, die auch Echtzeituhr (RTC) genannt wird. Wenn Sie das BIOS Ihres Systems aufrufen, können Sie die Uhrzeit Ihrer Hardware-Uhr sehen und deren Einstellungen ändern. Wenn Sie ein neues Linux installieren, werden Sie in einigen grafischen Zeitmanagern gefragt, ob Sie Ihre RTC auf die UTC-Zeitzone (koordinierte Weltzeit) einstellen sollen, da alle Zeitzonen und die Sommerzeit auf UTC basieren. Sie können den Befehl hwclock verwenden, um Folgendes zu überprüfen:

$ 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

Hardware-Uhr ist auf UTC-Zeit eingestellt. Dies zeigt an, dass die RTC Ihres Computers UTC-Zeit verwendet, diese Zeit jedoch in Ihre Ortszeit umrechnet. Wenn die Ortszeit eingestellt ist, wird angezeigt, dass die Hardwareuhr auf Ortszeit eingestellt ist. Sie sollten eine /etc/adjtime-Datei haben. Wenn nicht, verwenden Sie den folgenden Befehl, um Ihre RTC mit der Systemzeit zu synchronisieren:

$ sudo hwclock -w

Dieser Befehl generiert die Datei. Der Inhalt sieht in etwa wie folgt aus:

$ cat /etc/adjtime
0.000000 1516661953 0.000000
1516661953
UTC

Die neu erfundene systemd-Methode besteht darin, den Befehl timedatectl auszuführen, für dessen Ausführung keine Root-Rechte erforderlich sind:

$ 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 lokaler TZ: Nein bedeutet, dass UTC-Zeit verwendet wird. Wie kann man also auf die Ortszeit umstellen? Es gibt viele Möglichkeiten, dies zu tun. Am einfachsten geht es mit einem grafischen Konfigurationstool wie YaST von openSUSE. Sie können auch timedatectl:

verwenden
$ timedatectl set-local-rtc 0

Oder bearbeiten Sie /etc/adjtime und ersetzen Sie UTC durch LOCAL.

systemd-timesyncd-Client

systemd 提供了 systemd-timesyncd.service 客户端,它可以查询远程时间服务器并调整你的本地系统时间。在 /etc/systemd/timesyncd.conf 中配置你的(时间)服务器。大多数 Linux 发行版都提供了一个默认配置,它指向他们维护的时间服务器上,比如,以下是 Fedora 的:

[Time]
#NTP=
#FallbackNTP=0.fedora.pool.ntp.org 1.fedora.pool.ntp.org

你可以输入你希望使用的其它时间服务器,比如你自己的本地 NTP 服务器,在 NTP= 行上输入一个以空格分隔的服务器列表。(别忘了取消这一行的注释)NTP= 行上的任何内容都将覆盖掉 FallbackNTP 行上的配置项。如果你不想使用 systemd 呢?那么,你将需要 NTP 就行。

配置 NTP 服务器和客户端

配置你自己的局域网 NTP 服务器是一个非常好的实践,这样你的网内计算机就不需要不停查询公共 NTP 服务器。在大多数 Linux 上的 NTP 都来自 ntp 包,它们大多都提供 /etc/ntp.conf 文件去配置时间服务器。查阅 NTP 时间服务器池 去找到你所在的区域的合适的 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

driftfile 告诉 ntpd 它需要保存用于启动时使用时间服务器快速同步你的系统时钟的信息。而日志也将保存在他们自己指定的目录中,而不是转储到 syslog 中。如果你的 Linux 发行版默认提供了这些文件,请使用它们。

现在去启动守护程序;在大多数主流的 Linux 中它的命令是 sudo systemctl 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 systemctl enable ntpd 命令,永久启用它。如果你的 Linux 没有使用 systemd,那么,给你留下的家庭作业就是找出如何去运行 ntpd。

现在,你可以在你的局域网中的其它计算机上设置 systemd-timesyncd,这样它们就可以使用你的本地 NTP 服务器了,或者,在它们上面安装 NTP,然后在它们的 /etc/ntp.conf 上输入你的本地 NTP 服务器。

Das obige ist der detaillierte Inhalt vonHalten Sie die genaue Linux-Zeit ein. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn