はじめに
Linux には ハードウェアクロック と システムクロック の 2 種類の時計が存在する。
OS は主にシステムクロックを扱っている。
ハードウェアクロック(RTC)
マザーボード上に内蔵された物理的な時計。RTC(Real Time Clock)とも呼ばれる。
PC 電源が OFF された後もボタン電池により動作し続ける。
ハードウェアクロックは、BIOS や UEFI の画面で表示される。OS とは独立しているため、マシン上に Linux 以外の OS(Windowsなど)がインストールされている場合にも、各種 OS ハードウェアクロックを共有する。
$ hwclock
$ hwclock -r
$ hwclock --hctosys
$ hwclock --systohc
システムクロック
Linux(OS) が起動後、内部(カーネル)的に保持され、存在するソフトウェアの時計。
Linux 起動時にハードウェアクロックを参照することによって初期化され、その後、ハードウェアクロックとは独立して動き続ける。ただし、起動後に NTP などでネットワーク上のサーバと同期して調整されることがある。
カーネルが管理していて、Linux 上で動作する各種アプリ、ログ、ファイルのタイムスタンプで使用される。
PC 電源を OFF した後、時刻は保持されない。
$ date
コマンドで表示されるのは、このシステムクロックの時刻。
$ date
$ date
書式を指定して表示したい場合、書式指定文字列の先頭に +
を入力する。
$ date "+時刻指定文字列"
$ date "+%Y%m%d"
20250511
書式指定文字列 | 説明 |
---|---|
%Y |
年 |
%m |
月 |
%d |
日 |
%H |
時 |
%M |
分 |
%a |
曜日 |
%b |
月の名前 |
$ date MMDDhhmmYY # MM:月、DD:日、hh:時、mm:分、YY:西暦
$ date MMDDhhmmCC.ss # CC:西暦の下2桁、ss:秒
設定したシステムクロックは電源 OFF によって消滅する。
NTP
ntpd
は NTP クライアントとしても NTP サーバとしても機能する NTP デーモン(サービス)。
多くの一般的な PC やサーバは、クライアントとして ntpd
を使用することが多い。
NTP については こちら。
$ ntpdate
指定した NTP サーバから時刻を取得する。
$ ntpdate NTPサーバ名
$ ntpdate -q NTPサーバ名
/etc/ntp.conf
ntpd
デーモンの設定ファイル。
設定項目がそのままコマンド名になっている。
設定用コマンド 引数
driftfile ...
restrict ... # 自身が NTP サーバとして機能している
server ... # 自身が NTP クライアントとして機能している
ハードウェアクロックとシステムクロックの違い
比較対象 | ハードウェアクロック | システムクロック |
---|---|---|
管理 | マザーボード | カーネル |
電源 OFF 時 | 稼働し続ける | 停止する |
初期設定 | BIOS / UEFI | 起動時にハードウェアクロックをコピー |
用途 | OS 起動時のシステムクロック初期化 | 日常的に使用 |
時刻調整 | $ hwclock |
NTP |
表示方法 | $ hwclock |
$ date |
$ timedatectl
clock time, calender date, control
時刻やタイムゾーンを管理するためのコマンド。systemd
を採用している Linux ディストリビューションで使用される。
$ hwclock
や $ date
よりも高レベルな操作が可能。
$ timedatectl サブコマンド
$ timedatectl
$ timedatectl status
$ timedatectl list-timezones
$ sudo timedatectl set-timezone タイムゾーン # Asia/Tokyo など
$ sudo timedatectl set-time "HH:MM:SS"
$ sudo timedatectl set-time "YYYY-MM-DD HH:MM:SS"
$ sudo timedatectl set-time "YYYY-MM-DD"
時刻設定は NTP が有効化されている場合、コマンドが失敗する。
$ timedatectl set-ntp yes
$ timedatectl set-ntp no
Chrony
クロニー
従来の ntpd
に代わる、新しい軽量かつ高精度な NTP 実装。現在では ntpd
よりも chrony
の使用が推奨されている。
chrony は、プロジェクト名でもあり、コマンド名でもある。
- サーバ
-
chronyd
デーモン - NTP サーバとして機能する
-
- クライアント
-
$ chronyc
コマンド -
chronyd
デーモンの管理を行う
-
/etc/chrony.conf
chronyd
デーモンの設定ファイル。
設定項目がそのままコマンド名になっている。
設定用コマンド 引数
設定変更後は $ systemctl
で chronyd
デーモンを再起動する。
$ sudo systemctl restart chronyd
$ chronyc
chronyd
デーモンと対話するための NTP クライアント側のコマンド。
$ chronyc サブコマンド
$ chronyc sources
$ chronyc tracking