>  기사  >  시스템 튜토리얼  >  Linux의 정확한 시간을 유지하세요.

Linux의 정확한 시간을 유지하세요.

WBOY
WBOY원래의
2024-06-27 13:27:481093검색

让 Linux 保持精确时间

정확한 시간을 유지하는 방법, NTP 및 systemd를 사용하여 시간 서버를 남용하지 않고 컴퓨터를 동기화 상태로 유지하는 방법.

얼마나 걸리나요?

Linux는 시간을 알려주는 데 이상합니다. time 명령을 사용하여 시간을 알려준다고 생각할 수도 있지만, 시간은 프로세스가 실행된 기간을 측정하는 타이머일 뿐이기 때문에 그렇지 않습니다. 시간을 얻으려면 date 명령을 실행해야 합니다. 더 많은 날짜를 보려면 cal 명령을 실행할 수 있습니다. 파일의 타임스탬프는 배포의 기본 설정에 따라 표시하는 방법이 두 가지이므로 혼란의 원인이 될 수도 있습니다. 다음은 Ubuntu 16.04 LTS의 예입니다.

으아악

일부는 연도를 표시하고 일부는 시간을 표시하므로 파일이 더 혼란스러워집니다. GNU 기본값은 파일이 6개월 미만인 경우 연도 대신 시간을 표시하는 것입니다. 여기에는 이유가 있을 것이라고 생각했습니다. Linux가 이와 같은 경우 ls -l --time-style=long-iso 명령을 사용하여 동일한 방식으로 알파벳순으로 정렬된 타임스탬프를 표시해 보세요.

현재 설정 확인

NTP – 네트워크 시간 프로토콜(Network Time Protocol), 컴퓨터의 시간을 정확하게 유지하는 구식 방법입니다. ntpd는 공용 시간 서버에 주기적으로 쿼리하여 필요에 따라 컴퓨터의 시간을 조정하는 NTP 데몬입니다. 기본 기능을 사용하여 설정하기가 매우 쉬운 간단하고 가벼운 프로토콜입니다. systemd는 ntpd용 클라이언트로 사용할 수 있는 systemd-timesyncd.service를 사용하여 "NTP 작업 수행"을 넘어섰습니다.

NTP "처리"를 시작하기 전에 시간을 내어 현재 시간 설정이 올바른지 확인하세요. 시스템에는 (적어도) 두 개의 시계가 있습니다. 시스템 시간(Linux 커널에 의해 관리됨)과 두 번째는 실시간 시계(RTC)라고도 불리는 마더보드의 하드웨어 시계입니다. 시스템의 BIOS에 들어가면 하드웨어 시계의 시간을 확인하고 해당 설정을 변경할 수 있습니다. 새 Linux를 설치할 때 일부 그래픽 시간 관리자에서는 모든 시간대와 일광 절약 시간이 UTC를 기반으로 하기 때문에 RTC를 UTC(협정 세계시) 시간대로 설정할지 묻는 메시지가 표시됩니다. hwclock 명령을 사용하여 다음을 확인할 수 있습니다.

으아악

하드웨어 시계가 UTC 시간에 있음은 해당 시간을 현지 시간으로 변환하더라도 컴퓨터의 RTC가 UTC 시간을 사용하고 있음을 나타냅니다. 현지 시간으로 설정되어 있으면 하드웨어 시계가 현지 시간에 맞춰져 있다고 표시됩니다. /etc/adjtime 파일이 있어야 합니다. 그렇지 않은 경우 다음 명령을 사용하여 RTC를 시스템 시간과 동기화하세요.

으아악

이 명령은 파일을 생성하며 내용은 다음과 유사합니다.

으아악

새롭게 개발된 systemd 방식은 timedatectl 명령을 실행하는 것입니다. 이 명령은 실행하는 데 루트 권한이 필요하지 않습니다.

으아악

로컬 TZ의 RTC: no는 UTC 시간을 사용함을 나타냅니다. 그렇다면 현지 시간을 사용하도록 변경하는 방법은 무엇입니까? 이를 수행하는 방법에는 여러 가지가 있습니다. 가장 쉬운 방법은 openSUSE의 YaST와 같은 그래픽 구성 도구를 사용하는 것입니다. timedatectl:

을 사용할 수도 있습니다. 으아악

또는 /etc/adjtime을 편집하고 UTC를 LOCAL로 바꾸세요.

systemd-timesyncd 클라이언트

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 服务器。

위 내용은 Linux의 정확한 시간을 유지하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.