連載
» 2019年06月13日 05時00分 公開

Linux基本コマンドTips(312):【 timedatectl 】コマンド――時刻を表示/設定する

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、時刻を表示/設定する「timedatectl」コマンドです。

[西村めぐみ,@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、時刻やタイムゾーンを表示/設定する「timedatectl」コマンドです。

timedatectlコマンドとは?

 「timedatectl」は時刻やタイムゾーンを表示したり、設定したりするコマンドです(※1)。NTP(Network Time Protocol)を使用するかどうかなども設定できます(※2)。GNOMEデスクトップ環境の「設定」画面では「日付と時刻」に相当します。

 「date」コマンド(連載第77回)ではシステムクロックの表示と変更だけに対応していますが、timedatectlはRTC(Real Time Clock)も変更できます。

※1 世界の時刻の基準は複数の原子時計で定まる「国際原子時(International Atomic Time)」だ。国際原子時に地球の自転速度の遅れの影響をうるう秒として加味したものが「協定世界時(Universal Time Coordinated)」。これにタイムゾーンを当てはめた時刻が日本標準時などの「地方時(Local Time)」だ。
※2 Linuxシステムでは3種類の時刻を考える。マザーボード上のICの機能であるRTCが内蔵する時刻、システムクロック、協定世界時と同期するNTPサーバが保持する時刻だ。最も単純な設定ではLinuxの起動時にRTCの内容が読み出されてシステムクロックの値になる。timedatectlコマンドの内蔵コマンドを使ったり、オプションを指定したりすることで、それぞれを独立に設定できる。NTPサーバとの同期を有効にすると、定期的にシステムクロックが更新される。





timedatectlコマンドの書式

timedatectl [オプション] コマンド

※[ ]は省略可能な引数を示しています。





timedatectlの主なオプション

短いオプション 長いオプション 意味
--adjust-system-clock RTCの設定を変更したとき、それに合わせてシステムクロックを調整する
-P --privileged 実行前に権限を取得する(※3)
--no-ask-password パスワードプロンプトを表示しない
-H ホスト名 --host=ホスト名 リモートホストを設定する(ユーザー名が必要な場合は「-H ユーザー名@ホスト名」のように指定する)
--no-pager 「list-timezones」コマンドでタイムゾーンを一覧表示する際に、(moreコマンドのような)ページャーを使用しない

※3 Ubuntu 18.04 LTSでは無効。



主なコマンド

コマンド書式 意味
status 現在の時刻と設定を表示する(デフォルト)
set-time 時刻 システムの時刻とRTCを設定する
set-timezone タイムゾーン名 タイムゾーンを設定する
list-timezones 使用できるタイムゾーンを一覧表示する
set-local-rtc 設定 RTCを使用するかどうかを1または0で指定する(yes/no、true/falseも使用可能)
set-ntp 設定 NTPを使用するかどうかを1または0で指定する(yes/no、true/falseも使用可能、※4)

※4 GNOMEの「設定」画面から選択できる「日付と時刻」画面では、「ネットワーク時刻」(Ubuntu 18.04 LTSでは「自動日時設定」)で設定する。





現在の時刻設定を確認する

 「timedatectl」で現在のタイムゾーンおよび現在の時刻や設定を表示します(画面1)。画面1にある主な内容は次の通りです。

項目 意味
Local time タイムゾーンに従った現在の日時
Universal time 協定世界時による現在の日時
Timezone タイムゾーン
NTP enabled NTPを使用するかどうか(yes/no)
NTP synchronized NTPで同期しているかどうか(yes/no)
RTC in local TZ RTCのタイムゾーン(使用しない場合は「no」)
DST active 夏時間が有効かどうか(夏時間がない場所の場合は「n/a」)

コマンド実行例

timedatectl

(現在の時刻や設定を表示する)


画面1 画面1 現在の時刻や設定を表示したところ


タイムゾーンを変更する

 「timedatectl set-timezone タイムゾーン名」でタイムゾーンを設定します。例えば日本時間であれば「timedatectl set-timezone Asia/Tokyo」と指定します。実行にはroot権限が必要です(画面2、※5)。

※5 GNOMEの端末で実行している場合、一般ユーザーで実行するとパスワード入力を促すメッセージが表示されるので、実行しているユーザーのパスワードを入力する。



 使用できるタイムゾーンは「timedatectl list-timezones」で確認できます。400行以上あるため、「tzselect」コマンドで対話的に確認するとよいでしょう(画面3〜6)。

コマンド実行例

timedatectl set-timezone タイムゾーン名

(タイムゾーンを設定する)

tzselect

(タイムゾーンを確認する)(画面3


画面2 画面2 タイムゾーンを変更したところ
画面3 画面3 地域別にタイムゾーンを選択しているところ Ubuntu 18.04 LTSでは選択肢が異なる
画面4 画面4 アジアの国々の中からタイムゾーンを選択しているところ
画面5 画面5 タイムゾーン変更の確認画面
画面6 画面6 タイムゾーンの変更が完了した画面

 timedatectlでタイムゾーンを変更すると、「/etc/localtime」の内容が更新されます(画面7)。このファイルは、通常、「/usr/share/zoneinfo」下にある設定ファイルへのシンボリックリンクになっています。

 タイムゾーンを一時的に変更したい場合は、環境変数TZでタイムゾーンを設定します。この場合、「/etc/localtime」は変わりません(画面8)。

画面7 画面7 timedatectlでタイムゾーンを変更した場合の設定内容 /etc/localtimeの内容が変化した
画面8 画面8 環境変数TZでタイムゾーンを変更した場合の設定内容 /etc/localtimeの内容は変化していない


筆者紹介

西村 めぐみ(にしむら めぐみ)

元々はDOSユーザーで「DOS版UNIX-like tools」を愛用。ソフトハウスに勤務し生産管理のパッケージソフトウェアの開発およびサポート業務を担当、その後ライターになる。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『Accessではじめるデータベース超入門[改訂2版]』『macOSコマンド入門』など。地方自治体の在宅就業支援事業にてMicrosoft Officeの教材作成およびeラーニング指導を担当。会社などの"PCヘルパー"やピンポイント研修なども行っている。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。