第3章 日付と時刻の設定
最新のオペレーティングシステムは、以下の 2 つのタイプのクロックを区別します。
- リアルタイムクロック (RTC) は、一般に ハードウェアクロック と呼ばれ、通常、システムボード上の集積回路で、オペレーティングシステムの状態からは完全に独立しており、コンピューターがシャットダウンしても稼働します。
- システムクロック は ソフトウェアクロック とも呼ばれ、カーネルが維持し、その初期値はリアルタイムクロックに基づいています。システムが起動するとシステムクロックは初期化され、リアルタイムクロックからは完全に独立したものになります。
システム時間は常に 協定世界時 (UTC) で維持され、必要に応じてアプリケーション内でローカル時間に変換されます。ローカルタイム は、夏時間 (DST) を考慮に入れた現行タイムゾーンの実際の時刻です。リアルタイムクロックは UTC またはローカルタイムのいずれかを使用できます。これは推奨オプションです。
Red Hat Enterprise Linux 7 は、システムの日付と時刻に関する情報を設定および表示するのに使用できる 3 つのコマンドラインツールを提供します。
-
timedatectl
ユーティリティー (Red Hat Enterprise Linux 7 の新機能で、systemd
に含まれる)。 -
従来の
date
コマンド -
ハードウェアクロックにアクセスするための
hwclock
ユーティリティー
3.1. timedatectl
コマンドの使用
timedatectl ユーティリティーは、systemd
システムおよびサービスマネージャーの一部として配布されており、システムクロック設定を確認および変更できます。このツールを使用すると、現在の日付および時間の変更、タイムゾーンの設定、リモートサーバーとシステムクロックとの自動同期の有効化が可能になります。
カスタマイズした形式で現在の日付と時間を表示する方法は 「date コマンドの使用」 も参照してください。
3.1.1. システムの現在日時の表示
現在の日時をシステムおよびハードウェアクロック設定の詳細情報と共に表示するには、timedatectl
コマンドをオプションなしで実行します。
timedatectl
これで、ローカル時間、ユニバーサル時間、現在使用しているタイムゾーン、ネットワーク時刻プロトコル (NTP
) 設定、DST に関する追加情報が表示されます。
例3.1 システムの現在日時の表示
以下の例は、システムクロックとリモートサーバーの同期に NTP
を使用しないシステムで timedatectl
コマンドを実行したときの出力です。
~]$ timedatectl Local time: Mon 2016-09-16 19:30:24 CEST Universal time: Mon 2016-09-16 17:30:24 UTC Timezone: Europe/Prague (CEST, +0200) NTP enabled: no NTP synchronized: no RTC in local TZ: no DST active: yes Last DST change: DST began at Sun 2016-03-31 01:59:59 CET Sun 2016-03-31 03:00:00 CEST Next DST change: DST ends (the clock jumps one hour backwards) at Sun 2016-10-27 02:59:59 CEST Sun 2016-10-27 02:00:00 CET
timedatectl
は、chrony
または ntpd
のステータスへの変更を即座に認識しません。これらのツールの設定またはステータスを変更した場合は、以下のコマンドを実行します。
~]# systemctl restart systemd-timedated.service
3.1.2. システムの現在時刻の変更
システムの現在時刻を変更するには、root
でシェルプロンプトに以下を入力します。
timedatectl
set-time
HH:MM:SS
HH は時間、MM は分、SS は秒 (すべて 2 桁) の数字に置き換えます。
このコマンドは、システム時間とハードウェアクロックの両方を更新します。結果は、date --set
および hwclock --systohc
コマンドの両方を使用する場合と同様になります。
NTP
サービスが有効になっていると、このコマンドは失敗します。このサービスを一時的に無効にする方法は 「システムクロックのリモートサーバーとの同期」 を参照してください。
例3.2 システムの現在時刻の変更
システムの現在時刻を午後 11 時 26 分に変更するには、root
で以下のコマンドを実行します。
~]# timedatectl set-time 23:26:00
デフォルトでは、システムは UTC を使用するように設定されています。ローカルタイムでクロックを維持するようにシステムを設定するには、root
権限で、set-local-rtc
オプションとともに timedatectl
コマンドを実行します。
timedatectl
set-local-rtc
boolean
ローカルタイムでクロックを維持するようにシステムを設定するには、boolean を yes
(または y
、true
、t
、または 1
) に置き換えます。UTC を使用するようにシステムを設定するには、boolean を no
(または n
、false
、f
、または 0
) に置き換えます。デフォルトオプションは no
です。
3.1.3. システムの現在日の変更
システムの現在の日付を変更するには、root
でシェルプロンプトに以下を入力します。
timedatectl
set-time
YYYY-MM-DD
YYYY は 4 桁の年に、MM と DD は 2 桁の月と日に置き換えます。
時間を指定せずに日付を変更すると、時間は 00:00:00 に設定されることに注意してください。
例3.3 システムの現在日の変更
システムの現在日を 2017 年 6 月 2 日に変更し、現在時刻は変更しない (午後 11:26) 場合は、root
で以下のコマンドを実行します。
~]# timedatectl set-time "2017-06-02 23:26:00"
3.1.4. タイムゾーンの変更
利用可能なタイムゾーンのリストを表示するには、シェルプロンプトで以下を入力します。
timedatectl
list-timezones
現在使用中のタイムゾーンを変更するには、root
で以下を入力します。
timedatectl set-timezone time_zone
time_zone を、timedatectl list-timezones
コマンドで表示される値に置き換えます。
例3.4 タイムゾーンの変更
現在の場所に最も適したタイムゾーンを特定するには、timedatectl
コマンドに list-timezones
オプションを付けて実行します。たとえば、ヨーロッパのタイムゾーンのリストを表示するには、以下のコマンドを実行します。
~]# timedatectl list-timezones | grep Europe
Europe/Amsterdam
Europe/Andorra
Europe/Athens
Europe/Belgrade
Europe/Berlin
Europe/Bratislava
…
タイムゾーンを Europe/Prague
に変更するには、root
で以下を入力します。
~]# timedatectl set-timezone Europe/Prague
3.1.5. システムクロックのリモートサーバーとの同期
上記の説明にある手動での調整の他に、timedatectl
コマンドで NTP
プロトコルを使用して、システムクロックを自動でリモートサーバーのグループと同期させる方法もあります。NTP を有効にすると、chronyd
サービスまたは ntpd
サービスのうち、インストールされている方が有効になります。
NTP
サービスは、以下のコマンドを使用して有効または無効にできます。
timedatectl
set-ntp
boolean
システムでシステムクロックをリモートの NTP
サーバーと同期させるには、boolean を yes
に置き換えます (デフォルトのオプション)。この機能を無効にするには、boolean を no
に置き換えます。
例3.5 システムクロックのリモートサーバーとの同期
システムクロックとリモートサーバーの自動同期を有効にするには、以下を入力します。
~]# timedatectl set-ntp yes
このコマンドは、NTP
サービスがインストールされていないと失敗します。詳細は、「chrony のインストール」 を参照してください。