システム時刻
ハードウェアクロック
コンピュータ内の電池で動作しており、電源がオフの状態でも動き続けている
hwclockコマンド
ハードウェア時刻の参照や設定ができる
hwclock -r
hwclock --show
hwclock -w
hwclock --systohc
hwclock -s
hwclock --hctosys
システムクロック
カーネルの時刻
起動時はハードウェア時刻を参照する
その後は別々に動くため、時刻の差異が生じてくる
dateコマンド
$ date
2022年 2月 5日 土曜日 00時00分40秒 JST
rootユーザーはdateコマンドでシステム時刻を手動で設定できる
引数を「+」で始めると、指定した書式で表示する
date "+%Y-%m-%d" → 2022-02-05
$ touch $(date "+%Y%m%d").txt
タイムゾーンの設定
timedatectlコマンド
タイムゾーンや日付を管理できる
systemdを採用したディストリビューションで利用可能
タイムゾーン:地域ごとに区分された標準時間帯
$ timedatectl
Local time: Sat 2022-02-05 00:45:24 JST
Universal time: Fri 2022-02-04 15:45:24 UTC
RTC time: Fri 2022-02-04 15:45:25
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: inactive
RTC in local TZ: no
主なサブコマンド
# timedatectl set-time 2022-02-05 00:30:00
# timedatectl set-ntp yes
# timedatectl set-timezone Asia/Tokyo
# timedatectl list-timezones
タイムソーン情報は、/usr/share/zoneinfoディレクトリ配下に格納されている。
システムで利用するタイムゾーンは、上記のファイルを/etc/localtimeにコピーすることで設定できる
# cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
また、環境変数TZで設定することもできる
$ export TZ="Asia/Tokyo"
$ tzselect
NTPによる時刻設定
NTP (Network Time Protocol)
インターネット上にあるにNTPサーバーから正確な時刻を取得する
NTPは階層構造になっており、最上位は原子時計やGPSなどで正確な時刻情報を持っている
その直下のNTPサーバーをStratum1、その次の階層がStratum2...となっている
→NTPサーバーは複数のNTPサーバーから正確な時刻を取得する
ntpdateコマンド
ntpdate NTPサーバー名
$ sudo ntpdate ntp.nict.jp
ntpqコマンド
NTPサーバーの状態を表示する
$ ntpq -p
NTPサーバーの設定は/etc/ntp.conf
に設定する
Chrony
ntpd/ntpdateに代わるNTPサーバー/クライアントソフト
デーモンプロセスchronydとクライアントコマンドchronycから構成される
/etc/chrony.confファイルに設定する (Debian系では/etc/chrony/chrony.conf)
$ cat /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift
# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3
~~省略~~
同期先のNTPサーバーは、serverパラメータで指定する
"pool"はpoolプロジェクトが提供しているサーバーで、複数のNTPサーバーをまとめて仮想的なNTPサーバーとして運用している。
→特定のNTPサーバーに負荷が集中しないようにしている
serverパラメータの設定オプション
iburst:初回の同期時間をはやめる
prefer:優先するサーバーに設定する
minpoll:サーバーへのポーリング間隔の最小を設定。最小は4 → 2の4乗
maxpoll:サーバーへのポーリング間隔の最小を設定。最大は17 → 2の17乗
chronycコマンド
chronydの管理するコマンド
chronyc [サブコマンド]
$ chronyc sources
$ chronyc sources
210 Number of sources = 4
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 60-56-214-78f2.kns1.eonet 1 6 377 32 +283us[ +440us] +/- 8193us
^- 7c2956c8.i-revonet.jp 2 6 377 33 +839us[ +995us] +/- 31ms
^- gw1.kohaaloha.com 2 6 377 34 -6447us[-6291us] +/- 37ms
^- 122x215x240x75.ap122.ftth 2 6 377 33 -622us[ -465us] +/- 33ms
^*:同期元
^+:同期候補
^-:同期候補外
$ chronyc tracking
$ chronyc tracking
Reference ID : CB00710F (foo.example.net)
Stratum : 3
Ref time (UTC) : Fri Jan 27 09:49:17 2017
System time : 0.000006523 seconds slow of NTP time
Last offset : -0.000006747 seconds
RMS offset : 0.000035822 seconds
Frequency : 3.225 ppm slow
Residual freq : 0.000 ppm
Skew : 0.129 ppm
Root delay : 0.013639022 seconds
Root dispersion : 0.001100737 seconds
Update interval : 64.2 seconds
Leap status : Normal
Discussion