Linuxサーバでのタイムゾーン設定を確認した。設定の確認方法や変更方法をメモ。
現在時刻を確認するコマンド
下記コマンドで現在の時刻を表示できる。下記ではタイムゾーンがJSTになっていることから日本時間に設定されていることが分かる。タイムゾーンを変更したい場合は、UTCになっていて時刻が9時間ずれている場合が多いと思う。
date > Mon Jul 5 16:00:00 JST 2021
RHEL6でのタイムゾーン設定
RHEL6/7間で作法が変わった。両方記載しておく。
ハードウェアクロック向けの設定
ハードウェア上に設定されているタイムゾーンを変更する。/etc/sysconfig/clock を下記の通り書き変える。
ZONE="Asia/Tokyo" UTC=true
システムクロック向けの設定
次にシステムクロック向けの変更。下記コマンドで最後の行に書かれているのがシステムクロックに設定されているタイムゾーン。
strings /etc/localtime
次のコマンドでタイムゾーンを変更する。
sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
設定を有効にする
サーバを再起動して設定を反映する。ハードウェアクロックを設定していないと再起動時に変更した設定は失われてしまうので注意。
sudo reboot
RHEL7でのタイムゾーン設定
sudo timedatectl set-timezone Asia/Tokyo
コマンドtimedatectlだけでできる
ハードウェアクロックとシステムクロック
システムクロック
OSが管理する「システムクロック」。システムクロックはメモリ上に置かれ、OSによって時が刻まれ、管理される。OSがファイル管理などに使うのがシステムクロックだ。OSが管理しているため、OSをシャットダウンすると変更が失われる。
ハードウェアクロック
ハードウェアの上に実装されている。OSは起動するときにハードウェアクロックを参照して、その情報を元にシステムクロックを作る(ハードウェアクロックはマザーボード上の専用電池を使っている、場合によっては電池切れで時計がおかしいことも)。
NTP
正しい時刻設定を取得するためにNTPから情報を取得してネットワーク内で同期させる方法もある。
参考: