タイムゾーンを日本標準時(JST)に変更 【timedatectl】

タイムゾーンの設定を変更したいケース

インストールした直後のサーバーだとdateコマンドで日付を確認すると、時間が日本の標準時刻じゃなくてUTC(協定世界時)になっている場合があります。
OSインストール時にタイムゾーンを設定する時に設定忘れたりして、タイムゾーンが初期値のUTC(協定世界時)のままになっているケースが多いです。

タイムゾーンを変更するには、CentOS7以降では「timedatectl」コマンドでタイムゾーンを変更できます

現在のタイムゾーンの設定を確認する

現在のタイムゾーンを確認するには「timedatectl show」とコマンドを入力すれば確認できます。下記ではタイムゾーンはUTCとなっています。それが原因でdateコマンドの結果が日本の標準時刻との違う結果になっています

$ timedatectl show
Timezone=UTC (UTC, +0000)
LocalRTC=no
CanNTP=yes
NTP=yes
NTPSynchronized=no
TimeUSec=Tue 2024-10-08 02:52:51 UTC
RTCTimeUSec=Tue 2024-10-02 10:53:09 UTC

タイムゾーンを日本標準時に設定する

設定可能なタイムゾーンに「Asia/Tokyo」が含まれているか確認します

$ timedatectl list-timezones | grep Tokyo
Asia/Tokyo

指定したいタイムゾーンがない場合は以下のコマンドでタイムゾーンを追加します

# ubuntu
$ sudo apt install tzdata

#CentOS系(RHEL)
$ sudo dnf install tzdata

タイムゾーンを日本標準時に変更します

$ sudo timedatectl set-timezone Asia/Tokyo

日本標準時に変更されたか確認します

$ timedatectl show
Timezone=Asia/Tokyo
LocalRTC=no
CanNTP=yes
NTP=yes
NTPSynchronized=no
TimeUSec=Tue 2024-10-08 10:52:51 JST
RTCTimeUSec=Tue 2024-10-08 10:53:09 JST

タイムゾーン変更後について

ログに表示されるタイムスタンプにタイムゾーンに基づいて記録されます。
timedatectl コマンドでは即時に反映するのでサービスによってはサービスの再起動が不要なサービスもありますが、httpd や mysqld などのサービスが動作中の場合、サービスを再起動することで、正しいタイムゾーン設定が反映されることがあります。

そのようにサービスの再起動でタイムゾーン変更が反映する場合は、サービスの再起動が必要になりますので、ログのタイムスタンプがUTCのままの場合はサービスを再起動してください