Linuxサーバのタイムゾーン設定を変更する方法

dev

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から情報を取得してネットワーク内で同期させる方法もある。

参考:

タイトルとURLをコピーしました