第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
timedatectl
これで、ローカル時間、ユニバーサル時間、現在使用しているタイムゾーン、ネットワーク時刻プロトコル (NTP) 設定、DST に関する追加情報が表示されます。
例3.1 システムの現在日時の表示
以下の例は、システムクロックとリモートサーバーの同期に NTP を使用しないシステムで timedatectl コマンドを実行したときの出力です。
timedatectl は、chrony または ntpd のステータスへの変更を即座に認識しません。これらのツールの設定またはステータスを変更した場合は、以下のコマンドを実行します。
systemctl restart systemd-timedated.service
~]# systemctl restart systemd-timedated.service
3.1.2. システムの現在時刻の変更 リンクのコピーリンクがクリップボードにコピーされました!
システムの現在時刻を変更するには、root でシェルプロンプトに以下を入力します。
timedatectl set-time HH:MM:SS
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
~]# timedatectl set-time 23:26:00
デフォルトでは、システムは UTC を使用するように設定されています。ローカルタイムでクロックを維持するようにシステムを設定するには、root 権限で、set-local-rtc オプションとともに timedatectl コマンドを実行します。
timedatectl set-local-rtc boolean
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
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"
~]# timedatectl set-time "2017-06-02 23:26:00"
3.1.4. タイムゾーンの変更 リンクのコピーリンクがクリップボードにコピーされました!
利用可能なタイムゾーンのリストを表示するには、シェルプロンプトで以下を入力します。
timedatectl list-timezones
timedatectl list-timezones
現在使用中のタイムゾーンを変更するには、root で以下を入力します。
timedatectl set-timezone time_zone
timedatectl set-timezone time_zone
time_zone を、timedatectl list-timezones コマンドで表示される値に置き換えます。
例3.4 タイムゾーンの変更
現在の場所に最も適したタイムゾーンを特定するには、timedatectl コマンドに list-timezones オプションを付けて実行します。たとえば、ヨーロッパのタイムゾーンのリストを表示するには、以下のコマンドを実行します。
タイムゾーンを Europe/Prague に変更するには、root で以下を入力します。
timedatectl set-timezone Europe/Prague
~]# timedatectl set-timezone Europe/Prague
3.1.5. システムクロックのリモートサーバーとの同期 リンクのコピーリンクがクリップボードにコピーされました!
上記の説明にある手動での調整の他に、timedatectl コマンドで NTP プロトコルを使用して、システムクロックを自動でリモートサーバーのグループと同期させる方法もあります。NTP を有効にすると、chronyd サービスまたは ntpd サービスのうち、インストールされている方が有効になります。
NTP サービスは、以下のコマンドを使用して有効または無効にできます。
timedatectl set-ntp boolean
timedatectl set-ntp boolean
システムでシステムクロックをリモートの NTP サーバーと同期させるには、boolean を yes に置き換えます (デフォルトのオプション)。この機能を無効にするには、boolean を no に置き換えます。
例3.5 システムクロックのリモートサーバーとの同期
システムクロックとリモートサーバーの自動同期を有効にするには、以下を入力します。
timedatectl set-ntp yes
~]# timedatectl set-ntp yes
このコマンドは、NTP サービスがインストールされていないと失敗します。詳細は、「chrony のインストール」 を参照してください。