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
_(どちらでもない)によって更新されたタイムゾーンの変更を反映していないことを確認したためです。時間もタイムゾーンもプロセスで変更されました)。
私があなたを正しく理解していれば、以下があなたの質問の主な問題に答えると思います。
タイムゾーンを変更するには、/etc/localtime
を/usr/share/zoneinfo
ディレクトリツリー内のファイルの1つに置き換えます。 date
コマンドで時刻を設定してもタイムゾーンは変更されないため、/etc/localtime
ファイルには何も行われません。
/etc/localtime
を変更しても、実行中のプロセスに必ずしも影響しないことに注意してください。すべてのデーモンが新しいタイムゾーンを認識していることを確認する場合は、再起動します。