timedatectlコマンドとは
timedatectl
コマンドはLinuxシステムで時計やタイムゾーンを設定するためのコマンド。
timedatectl
コマンドはsystemd
に含まれるコマンドで、CentOS7以降、Ubuntu15.04以降で採用されている。
timedatectl
コマンドが使用される前はタイムゾーンの変更は所定のファイルを直接編集したり、シンボリックリンクを張ったりする必要があったが、
timedatectl
コマンドを使用することで簡単にタイムゾーンを変更できるようになった。
現在の設定値の確認
現在の設定値を確認するには、timedatectl show
コマンドを実行する。
$ timedatectl show
Timezone=UTC
LocalRTC=no
CanNTP=yes
NTP=yes
NTPSynchronized=yes
TimeUSec=Sat 2023-07-01 01:52:26 UTC
RTCTimeUSec=Sat 2023-07-01 01:52:26 UTC
それぞれの項目の意味は以下の通り。
- Timezone:タイムゾーン
- LocalRTC:ローカルタイムをRTCに格納するか
- CanNTP:NTPサーバーを使用できるか
- NTP:NTPサーバーを使用するか
- NTPSynchronized:NTPサーバーと同期しているか
- TimeUSec:システムクロックの現在時刻
- RTCTimeUSec:RTCの現在時刻
タイムゾーンを設定する
timedatectl
コマンドでタイムゾーンを設定する方法を紹介する。
現在のタイムゾーン設定値の確認
現在のタイムゾーンの設定値は先述のtimedatectl show
コマンドを使って確認できる。
$ timedatectl show | grep Timezone
Timezone=UTC
利用可能なタイムゾーンの一覧
利用可能なタイムゾーンは以下のコマンドで確認できる。
$ timedatectl list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Bamako
Africa/Bangui
Africa/Banjul
Africa/Bissau
・
・
・
Asia/Tokyoがあるかどうかを確認する。
$ timedatectl list-timezones | grep Tokyo
タイムゾーンの設定
タイムゾーンを設定するには、以下のコマンドを使用します。
$ sudo timedatectl set-timezone [タイムゾーン]
上記の[タイムゾーン]には、先ほど確認したタイムゾーンの一覧から適切なタイムゾーンを指定する。
Asia/Tokyo
を設定する場合は以下のコマンドを実行する。
$ sudo timedatectl set-timezone Asia/Tokyo
再度確認すると設定値が変更されている。
$ timedatectl show | grep Timezone
Timezone=Asia/Tokyo
指定したいタイムゾーンが無い場合の対処法
もし指定したいタイムゾーンが一覧にない場合はtzdataパッケージをインストールする必要がある。
ubuntuの場合は以下のコマンドでインストールできる。
$ sudo apt install tzdata
CentOSの場合は以下のコマンドでインストールできる。
$ sudo yum install tzdata
システムクロックを設定する
システムクロックのリモートサーバーとの同期
ntp
を有効にしてシステムクロックをリモートサーバーと同期させるには以下のコマンドを実行する。
$ sudo timedatectl set-ntp true
オフにする場合は以下のコマンドを実行する。
$ sudo timedatectl set-ntp false
固定値の指定
システムクロックを固定値を指定して設定するには以下のコマンドを実行する。
$ sudo timedatectl set-time "YYYY-MM-DD hh:mm:ss"
例
$ sudo timedatectl set-time "2022-07-01 00:00:00"
ただしntpが有効な場合は自動的に同期されるようになっているので、以下のようにエラーとなり指定できないようになっている。
$ sudo timedatectl set-time "2022-07-01 00:00:00"
Failed to set time: NTP unit is active
もし固定値を指定したい場合は先述のsudo timedatectl set-ntp false
コマンドでntpによる同期をオフにする必要がある。