ホームページ  >  記事  >  システムチュートリアル  >  Linux の正確な時間を維持する

Linux の正確な時間を維持する

WBOY
WBOYオリジナル
2024-06-27 13:27:481039ブラウズ

让 Linux 保持精确时间

正しい時刻を保つ方法、NTP と systemd を使用してタイム サーバーを悪用せずにコンピューターの同期を保つ方法。

どれくらいですか?

Linux は時間を知らせるのが奇妙です。 time コマンドを使用して時刻を知らせていると思うかもしれませんが、そうではありません。time は、プロセスの実行時間を測定する単なるタイマーだからです。時間を取得するには、date コマンドを実行する必要があります。さらに日付を表​​示したい場合は、cal コマンドを実行します。ファイルのタイムスタンプも、ディストリビューションのデフォルト設定に応じて 2 つの異なる表示方法があるため、混乱の原因となる可能性があります。以下は Ubuntu 16.04 LTS の例です:

リーリー

年を表示するものもあれば、時刻を表示するものもあります。この方法では、ファイルがさらにわかりにくくなります。 GNU のデフォルトでは、ファイルが作成されてから 6 か月未満の場合は、年の代わりに時刻が表示されます。これには何か理由があるのではないかと思いました。お使いの Linux がこのような場合は、ls -l --time-style=long-iso コマンドを使用して、同じ方法でタイムスタンプをアルファベット順に並べて表示してみてください。

現在の設定を確認してください

NTP – ネットワーク タイム プロトコル。コンピューターの時刻を正確に保つための昔ながらの方法です。 ntpd は、パブリック タイム サーバーに定期的に問い合わせることによって、コンピュータの時刻をオンデマンドで調整する NTP デーモンです。これはシンプルで軽量なプロトコルであり、基本機能を使用してセットアップが非常に簡単です。 systemd は、ntpd のクライアントとして使用できる systemd-timesyncd.service を使用することで、「NTP ジョブを実行する」ことを超えています。

NTP の「処理」を開始する前に、時間をかけて現在の時刻設定が正しいことを確認してください。システムには (少なくとも) 2 つのクロックがあります。1 つは Linux カーネルによって管理されるシステム時刻、もう 1 つはマザーボード上のハードウェア クロックで、リアルタイム クロック (RTC) とも呼ばれます。システムの BIOS に入ると、ハードウェア クロックの時刻が表示され、その設定を変更できます。新しい Linux をインストールすると、一部のグラフィカル タイム マネージャーでは、RTC を UTC (協定世界時) タイム ゾーンに設定するかどうかを尋ねられます。これは、すべてのタイム ゾーンと夏時間は UTC に基づいているためです。 hw Clock コマンドを使用して確認できます。

リーリー

ハードウェア時計が UTC 時間であることは、時間をローカル時間に変換しますが、コンピューターの RTC が UTC 時間を使用していることを示します。ローカル時間に設定されている場合は、「ハードウェア時計はローカル時間です」と表示されます。 /etc/adjtime ファイルが必要です。そうでない場合は、次のコマンドを使用して RTC をシステム時刻に同期させます:

リーリー

このコマンドによりファイルが生成され、内容は次のようになります:

リーリー

新しく発明された systemd の方法は、timedatectl コマンドを実行することです。このコマンドの実行には root 権限は必要ありません。 リーリー

ローカル 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。