Linuxのタイムゾーンを変更したのに定期実行がUNIXタイムで実施された罠
はじめに
- cronからsystemdのtimerの定期実行に変更した際に、なぜか定期実行がUNIX timeで実行された。
- dateで時間を調べてもJSTで取れているのになぜとなったので、作業ログとして残す
今回の環境
- Amazon EC2
- Amazon Linux 2023
やったこと
- systemdのtimerを使って定期実行を設定
- LinuxのTimeZoneを日本時間(JST)に設定
date Mon Jan 15 00:06:08 JST 2024
なにがダメだったのか
- systemdにもtimedatectlという独自のTimeZone設定が存在したこと
- 実際に見てみる
確かにUTCだったわ…timedatectl Local time: Sun 2024-01-14 15:09:59 UTC Universal time: Sun 2024-01-14 15:09:59 UTC RTC time: Sun 2024-01-14 15:09:58 Time zone: n/a (UTC, +0000) System clock synchronized: yes NTP service: active RTC in local TZ: no
設定をJSTに変更する
-
利用可能なタイムゾーンを確認するために
timedatectl list-timezones
timedatectl list-timezones Africa/Abidjan Africa/Accra Africa/Addis_Ababa Africa/Algiers Africa/Asmara Africa/Asmera Africa/Bamako Africa/Bangui Africa/Banjul
よし、やばそうだからgrepしよう…
Asiaで絞ったら99件あったので、抜粋timedatectl list-timezones | grep Asia | wc -l 99
Asia/Thimphu Asia/Tokyo Asia/Tomsk Asia/Ujung_Pandang Asia/Ulaanbaatar Asia/Ulan_Bator
Asia/Tokyoよし!
-
設定する
sudo timedatectl set-timezone 設定するタイムゾーン名(今回はAsia/Tokyo)
sudo timedatectl set-timezone Asia/Tokyo
-
確認
timezonectl
timedatectl Local time: Mon 2024-01-15 00:17:37 JST Universal time: Sun 2024-01-14 15:17:37 UTC RTC time: Sun 2024-01-14 15:17:36 Time zone: Asia/Tokyo (JST, +0900) System clock synchronized: yes NTP service: active RTC in local TZ: no
よさそうですね~!
まとめ
- この経験から、Linuxのタイムゾーン設定の重要性を再認識した
- systemd timersとcronの使い分けについて、状況に応じて検討することが重要ですね