システムクロックの設定

June 06, 2018

システムクロックとハードウェアクロック

ハードウェアクロック: ハードウェアとして内臓された時計
システムクロック: Linux のカーネル内に存在する時計

システムクロックは Linux 起動時にハードウェアクロックを参照して設定されるが、その後は別々に動き続ける。そのため、起動してからの時間が経過するにつれ、ハードウェアクロックとシステムクロックの差が生じてくる。

date コマンドはシステムクロックが参照する。

$ date  
Wed Jun  6 15:22:22 JST 2018  

また、「date [MMDDhhmm[[CC]YY][.ss]]」の書式でシステムクロックを変更できる。

date コマンドで設定したシステムクロックをハードウェアクロックにセットするには hwclock コマンドを使用する。

オプション 説明
-r ハードウェアクロックを表示する
-w (—systohc) システムクロックの時刻をハードウェアクロックに設定する
-s (—hctosys) ハードウェアクロックの時刻をシステムクロックに設定する
$ sudo hwclock  
2018年06月06日 15時27分25秒  .249848 seconds  
$ sudo hwclock --hctosys  

NTP による時刻設定

ハードウェアクロックもシステムクロックも、残念ながらあまり正確ではない。正確な時刻を設定するには、ネットワーク経由でクロックを同期する NTP (Network Time Protocol) を使い、インターネット上にある NTP サーバから正確な時刻を取得する。

NTP ネットワークは階層構造になっており、最上位には原子時計や GPS など、極めて正確な時刻情報提供元が存在する。
その直下にある NTP サーバを Stratum1 その下を Stratum2 … と呼ぶ。NTP サーバは上位の複数の NTP サーバから正確な時刻を取得する。

Linux では ntpdate コマンドにより NTP サーバから正確な時刻を取得できる。

$ ntpdate 196.254.196.123  

また、NTP サーバは自前で運用することもできる。

$ sudo /etc/init.d/ntpd start  
Starting ntpd:                                             [  OK  ]  

ntpq コマンドで NTP サーバの状態を照会することが可能。
以下の例では localhost で稼働している NTP サーバから問い合わせされている NTP サーバのリストを表示している。

$ ntpq -p localhost  
     remote           refid      st t when poll reach   delay   offset  jitter  
==============================================================================  
*169.254.169.123 10.66.1.94       3 u    1    8  377    0.106   -0.879   0.256  
 2.amazon.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000  
+mail.moe.cat    103.1.106.69     2 u    4   64    7    5.748   -0.710   0.647  
-ec2-54-64-6-78. 133.243.238.164  2 u    7   64    7    0.368   -0.692   0.689  
-108.61.223.189  133.243.238.163  2 u    8   64    7    5.321   -1.774   0.707  
+122x215x240x52. 103.1.106.69     2 u    2   64    7    4.258   -0.109   0.819  

NTP サーバの設定は /etc/ntp.conf で行う。問い合わせ先 NTP サーバは server パラメータで指定する。

$ cat /etc/ntp.conf | grep server | grep -v ^#  
server 169.254.169.123 prefer iburst minpoll 3  

 © 2023, Dealing with Ambiguity