3.3. hwclock コマンドの使用
hwclock
は、ハードウェアクロックにアクセスするためのユーティリティーです。これは、リアルタイムクロック (RTC) とも呼ばれています。ハードウェアクロックは使用中のオペレーティングシステムから独立しており、マシンがシャットダウンしても作動します。このユーティリティーは、ハードウェアクロックからの時間を表示するために使用されます。また、hwclock
には、ハードウェアクロック内のシステム上のドリフトを補正する機能も含まれています。
ハードウェアクロックタイムは、年、月、日、時間、分、秒の値を保存します。ローカルタイムや協定世界時 (UTC) の時刻を保存したり、夏時間 (DST) を設定したりすることはできません。
hwclock
ユーティリティーは、/etc/adjtime
ファイルにその設定を保存します。このファイルは、時刻を手動で設定したり、ハードウェアクロックをシステム時間に同期したりするなどの初回の変更時に作成されます。
Red Hat Enterprise Linux バージョン 6 から 7 の間の hwclock
の動作の変更については、Red Hat Enterprise Linux 7 移行計画ガイド を参照してください。
3.3.1. システムの現在日時の表示
root
ユーザーで、オプションを付けずに hwclock
を実行すると、標準出力にローカルタイムの日時が返されます。
hwclock
hwclock
コマンドで --utc
オプションまたは --localtime
オプションを指定しても、ハードウェアクロック時間が UTC またはローカルタイムで表示される訳ではないことに注意してください。これらのオプションは、ハードウェアクロックのいずれかの設定を変更するために使用されます。この時間は常にローカル時間で表示されます。したがって、hwclock --utc
または hwclock --local
コマンドを実行しても、/etc/adjtime
保存された設定が変更されるわけではありません。このコマンドは、/etc/adjtime
に保存されている設定が正しくないことを把握していて設定を変更したくない場合に便利です。一方、このコマンドを誤った方法で使用すると、誤解を招く情報を受け取る可能性があります。詳細は、hwclock
(8) man ページを参照してください。
例3.9 システムの現在日時の表示
ハードウェアクロックからシステムの現在の日付およびローカルタイムを表示するには、root
で以下を実行します。
~]# hwclock Tue 15 Apr 2017 04:23:46 PM CEST -0.329272 seconds
CEST は 中央ヨーロッパ夏時間 (Central European Summer Time) の省略形です。
タイムゾーンの変更方法は 「タイムゾーンの変更」 を参照してください。
3.3.2. 日付と時刻の設定
ハードウェアクロックは、日付と時刻を表示するほかに、手動で特定の時刻に設定することができます。
ハードウェアクロックの日時を変更する場合は、コマンドに --set
および --date
オプションを追加します。
hwclock --set --date "dd mmm yyyy HH:MM"
dd は日 (2 桁)、mmm は月の省略形 (3 文字) に、yyyy は年 (4 桁)、HH は時間 (2 桁)、MM は分 (2 桁) に置き換えます。
同時に、--utc
または --localtime
オプションをそれぞれ追加して、UTC またはローカルタイムのいずれかで時刻を維持するようにハードウェアクロックを設定することもできます。この場合、UTC
または LOCAL
は /etc/adjtime
ファイルに記録されます。
例3.10 ハードウェアクロックの特定の日時への設定
たとえば、日時を 2016 年 10 月 21 日 21:17 に設定し、UTC のハードウェアクロックを維持する場合は、root
で以下のコマンドを実行します。
~]# hwclock --set --date "21 Oct 2016 21:17" --utc
3.3.3. 日付と時刻の同期
ハードウェアクロックとシステムの現在時刻の同期を両方向で実行できます。
以下のコマンドを使用して、ハードウェアクロックを、システムの現在時刻に設定できます。
hwclock --systohc
NTP を使用すると、ハードウェアクロックは 11 分ごとにシステムクロックに自動的に同期されるため、このコマンドは、システムのブート時に、妥当な初期のシステム時間を取得するためにのみ役立つことに注意してください。
または、以下のコマンドを使用してハードウェアクロックからシステム時間を設定できます。
hwclock --hctosys
ハードウェアクロックとシステム時間を同期する場合は、--utc
または --localtime
を追加してローカルタイムまたは UTC でハードウェアクロックを保持するかどうかを指定できます。--set
の使用と同様に、UTC
または LOCAL
は /etc/adjtime
ファイルに記録されます。
hwclock --systohc --utc
コマンドは timedatectl set-local-rtc false
に機能的に類似しており、hwclock --systohc --local
コマンドは timedatectl set-local-rtc true
の代替コマンドになります。
例3.11 システムタイムへのハードウェアクロックの同期
ハードウェアクロックをシステムの現在時刻に設定し、ハードウェアクロックをローカルタイムで維持するには、root
で以下のコマンドを実行します。
~]# hwclock --systohc --localtime
タイムゾーンおよび DST の切り替えに関する問題を避けるには、ハードウェアクロックを UTC で維持することを推奨します。例3.11「システムタイムへのハードウェアクロックの同期」 は、Windows システムとのマルチブートの場合などに役立ちます。この場合、デフォルトでハードウェアクロックがローカルタイムで実行されることが想定され、その他のシステムもすべてローカルタイムを使用して対応する必要があります。同様に仮想マシンでも必要になる場合があります。ホストが提供する仮想ハードウェアクロックがローカルタイムで実行中の場合は、ゲストシステムもローカルタイムを使用するように設定する必要があります。