timedatectlコマンド
ctlという響きから、systemd絡みであることはなんとなく想像がつきます。systemdを採用しているディストリビューションは、timedatectlコマンドで、日付、時刻、タイムゾーンを管理することができます。
書式
timedatectl コマンド
※コマンドは、下記にある表のコマンドを指します。
コマンド
コマンド | 説明 |
status | 現在の時刻と設定を表示する。 |
set-time 時刻 | 時刻の場合は「HH:MM:SS」 |
日付の場合は「YYYY-MM-DD」で指定する。(同時指定可能) | |
set-timezone | タイムゾーンを設定する。 |
list-timezone | タイムゾーンを一覧表示する。 |
set-ntp yes|no | NTPを使うかどうかを「yes」か「no」で指定する。 |
検証
検証にはCentOS8を使用しています。
検証1 statusで設定値の確認
まずはステータスを見ます。「timedatectl status」を実行します。
1 2 3 4 5 6 7 8 |
[root@localhost localhost]# timedatectl status Local time: 木 2020-10-01 12:08:59 JST Universal time: 木 2020-10-01 03:08:59 UTC RTC time: 木 2020-10-01 03:08:59 Time zone: Asia/Tokyo (JST, +0900) System clock synchronized: no NTP service: inactive RTC in local TZ: no |
一覧で見れて便利ですね。
検証2 set-timeで日時の変更
日付と時刻と設定します。現在の設定を確認します。「timedatectl status」を実行します。
1 2 3 4 5 6 7 8 |
[root@localhost localhost]# timedatectl status Local time: 木 2020-10-01 12:08:59 JST Universal time: 木 2020-10-01 03:08:59 UTC RTC time: 木 2020-10-01 03:08:59 Time zone: Asia/Tokyo (JST, +0900) System clock synchronized: no NTP service: inactive RTC in local TZ: no |
では、「timedatectl set-time “2020-11-01 12:00:00”」を実行して、2020年11月01日の12時00分00秒に設定します。
1 2 3 4 5 6 7 8 9 |
[root@localhost localhost]# timedatectl set-time "2020-11-01 12:00:00" [root@localhost localhost]# timedatectl status Local time: 日 2020-11-01 12:00:13 JST Universal time: 日 2020-11-01 03:00:13 UTC RTC time: 日 2020-11-01 03:00:14 Time zone: Asia/Tokyo (JST, +0900) System clock synchronized: no NTP service: inactive RTC in local TZ: no |
timedatectlコマンドを実行すると、システムクロック、ハードウェアクロックの両方が変更されます。
1 2 3 4 |
[root@localhost localhost]# date 2020年 11月 1日 日曜日 12:00:03 JST [root@localhost localhost]# hwclock 2020-11-01 12:00:09.013920+09:00 |
検証3 list-timezonesでタイムゾーンの一覧を取得
「timedatectl list-timezones」でタイムゾーンの一覧を表示します。全部表示するとかなりの量なので、Asiaのみを表示。それでも多かったので、途中省略しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
[root@localhost localhost]# timedatectl list-timezones |grep Asia Asia/Aden Asia/Almaty Asia/Amman Asia/Anadyr Asia/Aqtau Asia/Aqtobe Asia/Ashgabat Asia/Atyrau Asia/Baghdad Asia/Bahrain Asia/Baku Asia/Bangkok Asia/Barnaul (途中省略) Asia/Thimphu Asia/Tokyo Asia/Tomsk Asia/Ulaanbaatar Asia/Urumqi Asia/Ust-Nera Asia/Vientiane Asia/Vladivostok Asia/Yakutsk Asia/Yangon Asia/Yekaterinburg Asia/Yerevan |
上記を参考に、タイムゾーンを変更します。
検証4 set-timezoneでタイムゾーンの変更
「timedatectl set-timezone」でタイムゾーンを変更します。せっかくなので、日本ではない場所を指定してみました。
1 2 3 4 5 6 7 8 9 10 |
[root@localhost localhost]# timedatectl set-timezone Asia/Bangkok [root@localhost localhost]# timedatectl status Local time: 日 2020-11-01 10:04:58 +07 Universal time: 日 2020-11-01 03:04:58 UTC RTC time: 日 2020-11-01 03:04:58 Time zone: Asia/Bangkok (+07, +0700) System clock synchronized: no NTP service: inactive RTC in local TZ: no |
変更されました。
検証5 set-ntp yesでNTPを有効化
NTPの設定ができます。けっこう手軽です。設定前は「NTP service」が「inactive」になっています。
1 2 3 4 5 6 7 8 |
[root@localhost localhost]# timedatectl status Local time: 日 2020-11-01 12:05:20 JST Universal time: 日 2020-11-01 03:05:20 UTC RTC time: 日 2020-11-01 03:05:21 Time zone: Asia/Tokyo (JST, +0900) System clock synchronized: no NTP service: inactive RTC in local TZ: no |
「timedatectl set-ntp yes」を実行します。
1 |
[root@localhost localhost]# timedatectl set-ntp yes |
※すぐには同期されません。ちょっと待ちます。ステータスを再確認します。
1 2 3 4 5 6 7 8 |
[root@localhost localhost]# timedatectl status Local time: 月 2020-09-07 15:52:36 JST Universal time: 月 2020-09-07 06:52:36 UTC RTC time: 日 2020-11-01 03:07:27 Time zone: Asia/Tokyo (JST, +0900) System clock synchronized: yes NTP service: active RTC in local TZ: no |
同期されました。※すいません。日付は「2020-09-07」が正しい日付です。
システムクロックとハードウェアクロックの設定を見ます。
1 2 3 4 |
[root@localhost localhost]# date 2020年 9月 07日 月曜日 15:55:06 JST [root@localhost localhost]# hwclock 2020-11-01 12:10:01.676381+09:00 |
システムクロックは反映されていますが、ハードウェアクロックは変更されていません。
「hwclock -w」を実行して、システムクロックの時刻をハードウェアクロックに同期します。
1 2 3 4 |
[root@localhost localhost]# hwclock -w [root@localhost localhost]# hwclock 2020-09-07 15:56:29.059226+09:00 |
同期されました。