タイムゾーンを日本標準時(JST)に変更する CentOS 8, 7, 6

DigitalOceanなど海外のサーバを利用すると、タイムゾーンがUTC(協定世界時)になっていて、ログを確認していても時間の感覚がつかめなかったり、ログの情報を読む際に日本時間と勘違いしてしまったりする。

そのため、普段からJST(日本標準時)で運用してる場合は、ホストのタイムゾーンはJSTに統一しておいた方がよいだろう。

CentOS 8, 7の場合

CentOS 8, 7ではタイムゾーンはtimedatectlコマンドで設定する。

# timedatectl set-timezone Asia/Tokyo

# timedatectl status
Local time: Wed 2015-10-28 08:14:11 JST
Universal time: Tue 2015-10-27 23:14:11 UTC
RTC time: Tue 2015-10-27 23:14:11
Timezone: Asia/Tokyo (JST, +0900)
NTP enabled: n/a
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a

設定できるタイムゾーンはlist-timezonesサブコマンドで確認できる。

# timedatectl list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
...以下略

CentOS 6の場合

CentOS 6の場合は/usr/share/zoneinfo/Japan/etc/localtimeにコピーすることでタイムゾーンを設定することができる。

# date
Thu Apr  9 02:19:48 UTC 2015

# cp /usr/share/zoneinfo/Japan /etc/localtime
cp: overwrite `/etc/localtime'? y

# date
Thu Apr  9 11:19:54 JST 2015

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

ログに表示されるタイムスタンプにタイムゾーンを反映させるには各種サービスを再起動する必要がある。そのため、可能であればタイムゾーンの設定を変更した後にホスト自体を再起動することをおすすめする。

すぐにホストの再起動をすることが難しい場合は、rsyslogと主要なサービスを再起動しておくと良いだろう。

  • CentOS 8, 7
# systemctl restart rsyslog.service
  • CentOS 6
# /etc/init.d/rsyslog restart