web-dev-qa-db-ja.com

ntpdおよび/ etc / localtimeによる時間の影響

UNIXまたはfreeBSDでは、ntpdと_/etc/localtime_と_system clock_がどのように相互作用するかを誰かが説明できますか?

あなたがそれを指摘できるように、私がそれらのいくつかを誤解する場合に備えて、私は概念の以下の長い説明をします。私の本当の質問は以下にあります。

[〜#〜] date [〜#〜]シェルで「_date modify_」を実行すると、_/etc/localtime_が変更されると思います。 _/etc/localtime_には、日付と時刻、およびタイムゾーン情報の両方が含まれます。これらの情報は、localtime()などのglibc関数によって照会され、タイムゾーンはtzset()によって手動で設定することもできます。 。

clocksオンラインの他の資料によると、コンピューターには_hardware clock_と_system clock_の2つの時計があります。ハードウェアクロックはマザーボード上のバッテリーによって維持されますが、システムクロックはソフトウェアの概念です。システムクロックは、システム起動時にハードウェアクロックによって設定されます。ただし、後でntpdで調整できます(間違っている場合は修正してください)。

ntpdnptdは、システムの起動から数秒後に開始されるユーザースペースプロセスです。 _ntp.conf_によって構成された特定のntpサーバーにクエリを実行します。時間に劇的な変化を与えないという点で、遅い時間ドリフト調整の特徴があります。 (ただし、タイムゾーンについてはどうでしょうか。ntpdもタイムゾーンをクエリし、徐々に変更しますか?時間がかかりすぎる可能性があります。)劇的な時間更新には、ntpupdate()apiがあります。

質問

それらの間の相互作用を説明するリソースは見つかりませんでした。これらの概念のそれぞれには、触れて保持するためのいくつかの独立したローカルファイルがあるようです。私が尋ねる理由は、ユーザーがデータの表示を要求するたびに動的にlocaltimeを呼び出す、私が書いたプロセスでは、_date modify_(どちらでもない)によって更新されたタイムゾーンの変更を反映していないことを確認したためです。時間もタイムゾーンもプロセスで変更されました)。

1
Figo

私があなたを正しく理解していれば、以下があなたの質問の主な問題に答えると思います。

タイムゾーンを変更するには、/etc/localtime/usr/share/zoneinfoディレクトリツリー内のファイルの1つに置き換えます。 dateコマンドで時刻を設定してもタイムゾーンは変更されないため、/etc/localtimeファイルには何も行われません。

/etc/localtimeを変更しても、実行中のプロセスに必ずしも影響しないことに注意してください。すべてのデーモンが新しいタイムゾーンを認識していることを確認する場合は、再起動します。

1
snap