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」を実行します。
[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」を実行します。
[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秒に設定します。
[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コマンドを実行すると、システムクロック、ハードウェアクロックの両方が変更されます。
[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のみを表示。それでも多かったので、途中省略しています。
[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」でタイムゾーンを変更します。せっかくなので、日本ではない場所を指定してみました。
[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」になっています。
[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」を実行します。
[root@localhost localhost]# timedatectl set-ntp yes
※すぐには同期されません。ちょっと待ちます。ステータスを再確認します。
[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」が正しい日付です。
システムクロックとハードウェアクロックの設定を見ます。
[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」を実行して、システムクロックの時刻をハードウェアクロックに同期します。
[root@localhost localhost]# hwclock -w
[root@localhost localhost]# hwclock
2020-09-07 15:56:29.059226+09:00
同期されました。
