PCのデスクトップ上には時刻が表示されています。
このようにハードウェアなどのシステム上ではどのように時間管理がされているのでしょうか。
NTP
NTP(Networking Time Protocol)はTCP/IPの通信を通じて時間に関する送受信が行われるプロトコルです。サーバー・クライアント方式で通信の送受信を行い、NTPサーバーとNTPクライアントが存在します。
クライアントがNTPサーバに「今何時?」と問い合わせて、
NTPサーバが「10時」のように返答することで、クライアント内部で時間調整を行っています。
ハードウェアクロック
ハードウェアクロックとはハードウェア内に設置されている時計のようなものです。
人間でいう体内時計?みたいな感覚です。
これを管理するコマンドがhwclockコマンドです。
システムクロック
Linuxカーネルが持つ時刻です。NTPサーバーと時刻の送受信を行う際にやり取りします。
システムクロックはdateコマンドで管理・設定がなされます。
引用:https://www.wantanblog.com/entry/2020/12/31/153728
NTPサーバとシステムクロックとハードウェアクロックのこのような相関関係になっています。
時刻同期の方法
時刻同期には
「任意のタイミングでNTPサーバから時刻を取得する」
「NTPデーモン(ntpd)により自動で時刻を同期する」
があります。
システム内部にはシステムクロックとハードウェアクロックがありますが、製造上のばらつきや環境要因により、必ず時刻ののずれが発生し自力で時間管理ができません。
なので正確な時刻を維持するために、NTPによる時刻同期機能を使います。
ntpdateコマンド
ntpdateコマンドはNTPクライアントがNTPサーバから正確な時刻を取得してきます。
そのあと、hwclockコマンドでハードウェアクロック側に時刻を反映されることで時刻の維持ができます。
タイムゾーンについて
タイムゾーンは国や地域ごとの標準時間帯を言います。
Asia/Tokyoのように東京の日時はUTC(協定世界時)からの時差や夏時間の実施期間などが決められています。
システム内でのタイムゾーンの設定にはtimedatectlコマンドが使えるようになっています。
例:timedatectl set-timezone Asia/Tokyo
■参考