[AWS] Amazon Linux 2 + 旧版 タイムゾーンを変更

環境AWS,Linux

Amazon Linux 2 および Amazon Linux で、タイムゾーンをデフォルトの UTC からカナダ・バンクーバー時間( PDT )と、日本に変更する方法。
2018 年 6 月ごろに、 Amazon Linux 2 の正式版が一般公開された。旧版( Amazon Linux )はベースがRedhat6系だったが、Redhat7系に変わり、タイムゾーンを設定するコマンドも変わったので新たに追記( 2019/08 )。

バージョン:Amazon Linux AMI release 2018.03 , Amazon Linux release 2

前準備

現在時刻を確認

どっちでも使える。

$ date
Wed Apr  3 09:23:06 JST 2019
現在のタイムゾーンを確認する Amazon Linux 2 で使えるコマンド

$ timedatectl
      Local time: Thu 2019-08-15 22:52:03 UTC
  Universal time: Thu 2019-08-15 22:52:03 UTC
        RTC time: Thu 2019-08-15 22:52:03
       Time zone: n/a (UTC, +0000)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

変更したいタイムゾーンの確認

Amazon Linux 2

タイムゾーン一覧を表示するコマンド。

$ timedatectl list-timezones
...
America/Toronto
America/Tortola
America/Vancouver
America/Whitehorse
America/Winnipeg
America/Yakutat
America/Yellowknife
...

いっぱい出てくるから、キーボードの「下」押して必要なタイムゾーンを探す。
一覧の表示を終了するには、 q を押す。

Amazon Linux (旧版)

/usr/share/zoneinfo ディレクトリから、変更したいタイムゾーンのファイルを確認。

$ ls /usr/share/zoneinfo
Africa      Canada   GB         Indian     Mexico    ROK        iso3166.tab
America     Chile    GB-Eire    Iran       NZ        Singapore  leapseconds
Antarctica  Cuba     GMT        Israel     NZ-CHAT   Turkey     posix
Arctic      EET      GMT+0      Jamaica    Navajo    UCT        posixrules
Asia        EST      GMT-0      Japan      PRC       US         right
...
上記一覧で希望するタイムゾーンがフォルダだった場合、その配下のファイルを確認する。

$ ls /usr/share/zoneinfo/Canada
Atlantic  Eastern   Newfoundland  Saskatchewan
Central   Mountain  Pacific       Yukon
* バンクーバーは「 Pacific 」ファイル。

タイムゾーンを変更する

Amazon Linux 2

Amazon Linux 2 では、 timedatectl コマンドを使う。

$ sudo timedatectl set-timezone America/Vancouver
日本時間に変更するときは、
$ sudo timedatectl set-timezone Asia/Tokyo

Amazon Linux (旧版)

/etc/sysconfig/clock ファイルを変更

ZONE を、上記で確認したタイムゾーンファイル名に変更

$ sudo vi /etc/sysconfig/clock
#ZONE="UTC"
ZONE="Canada/Pacific"
UTC=true
日本時間( JST )に変更する場合は、

#ZONE="UTC"
ZONE="Asia/Tokyo"
UTC=true
AWSの公式ドキュメントに下記注意書きあり
注記
UTC=true エントリを別の値に変更しないでください。このエントリは、ハードウェアクロックに使用されるため、インスタンスで別のタイムゾーンを設定する場合は調整する必要はありません。

シンボリックリンクの作成

$ sudo ln -sf /usr/share/zoneinfo/Canada/Pacific /etc/localtime
日本時間( JST )に変更する場合は、
$ sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

ln コマンドは、ディレクトリやファイルへのリンクを作成するコマンドで、オプションに -s をつけるとシンボリックリンク、オプション無しだとハードリンクが作成される。
オプション -f は、同じリンク名がすでに作成されている場合、上書きされる

シンボリックリンク作成時、間違って再度一回実行したらうまくいかなった
〜/Canada/Pacificと〜/Pacific は同じファイルですという旨のエラーが出たので、/etc/localtime を削除してから、ln コマンドを実行してうまくいった

# 削除コマンド
$ sudo rm /etc/localtime

時間が変わったことを確認


$ date
Tue Apr  2 17:56:03 PDT 2019

reboot

reboot してもタイムゾーンが変わらないことを確認する

$ sudo reboot
$ date
Tue Apr  2 17:58:59 PDT 2019

reboot できない場合の注意点

タイムゾーン変更後、再起動ができない場合には、cron とsyslog ( rsyslog ) を再起動する
再起動しないと、新しいタイムゾーンが適用されない

$ sudo service crond restart
$ sudo service rsyslog restart

Posted by Agopeanuts