Amazon Linux2(systemd)のシステム時刻を変更する
今回はAmazon Linux から Amazon Linux2 への移行をする機会があったので、 システム時刻の変更に関して備忘録として残しておきます。
なお、以降の手順は公式の Amazon Linux2 のAMIをそのままブートした後に試しています。
システムクロックを変更する
システムクロックは /etc/adjtime
を使ってハードウェアクロックから算出されます。
systemd
の場合、 /etc/adjtime
が存在しないとデフォルトでUTCを使うそうですが、今回は存在していました。
cat /etc/adjtime
> 0.0 0 0.0
> 0
> UTC
システムクロックを確認しましょう。 timedatectl
コマンドを実行してみます。
timedatectl
> Local time: Sat 2018-06-09 05:16:29 UTC
> Universal time: Sat 2018-06-09 05:16:29 UTC
> RTC time: Sat 2018-06-09 05:16:28
> Time zone: n/a (UTC, +0000)
> NTP enabled: yes
> NTP synchronized: no
> RTC in local TZ: no
> DST active: n/a
何もしていないので、UTCのままですね。
次にtimezoneを Asia/Tokyo
にしてみましょう。こちらも timedatectl
コマンドで設定可能です。
timedatectl set-timezone Asia/Tokyo
設定がされたか確認してみましょう。 timedatectl
コマンドを実行したら、 Time zoneがJSTになっていることが確認できます。
timedatectl
> Local time: Sat 2018-06-09 14:57:45 JST
> Universal time: Sat 2018-06-09 05:57:45 UTC
> RTC time: Sat 2018-06-09 05:57:45
> Time zone: Asia/Tokyo (JST, +0900)
> NTP enabled: yes
> NTP synchronized: no
> RTC in local TZ: no
> DST active: n/a
タイムゾーンを変更すると、 /etc/localtime
にその設定が反映されます。
ファイルを見てみましょう。 cat
してみましょう。
cat /etc/localtime
> TZif2
> ��>p��K����p��-���ۭ����������~~LMTJDTJSTTZif2
>
> �����e¤p�����>p������K��������p������-�����������ۭ������������������~~LMTJDTJST
文字化けしてしまいましたね。代わりに、 zdump
コマンドを使うことで /etc/localtime
が指すタイムゾーンの情報を確認してみましょう。
これで JST になっていることを確認できました。
zdump /etc/localtime
> /etc/localtime Sat Jun 9 14:57:54 2018 JST
ちなみに timedatectl set-time "2018-06-09 12:00:00"
のように、
直接引数に与えられた時刻に設定することができますが、個人的に使った経験はありません。
ハードウェアクロックを確認する
Linuxが起動するときにシステムクロックを設定するため、ハードウェアクロックの情報が参照されます。
ハードウェアクロックの情報は hwclock
コマンドで確認できます。
hwclock --debug
> hwclock from util-linux 2.30.2
> Trying to open: /dev/rtc0
> Using the rtc interface to the clock.
> Last drift adjustment done at 0 seconds after 1969
> Last calibration done at 0 seconds after 1969
> Hardware clock is on UTC time
> Assuming hardware clock is kept in UTC time.
> Waiting for clock tick...
> ...got clock tick
> Time read from Hardware Clock: 2018/06/09 06:09:22
> Hw clock time : 2018/06/09 06:09:22 = 1528524562 seconds since 1969
> Time since last adjustment is 1528524562 seconds
> Calculated Hardware Clock drift is 0.000000 seconds
> 2018-06-09 15:09:21.645250+0900
デバッグオプションなしで、 hwclock
だけ実行すると、ハードウェアに記録されている時刻が表示されます。
hwclock
> 2018-06-09 15:09:21.645250+0900