このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Linux】システムクロックとハードウェアクロックの同時設定:timedatectlコマンド

システムクロックとハードウェアクロックの同時設定する

 現代のコンピュータシステムにおいて、正確な時刻管理は非常に重要です。正確な時刻設定は、ログ管理、スケジュールタスク、データの一貫性、およびセキュリティ対策において不可欠です。Linuxシステムでは、時刻管理のためにシステムクロックとハードウェアクロックの二つの時計が使用されます。システムクロックは、オペレーティングシステムが稼働している間に使用されるソフトウェアクロックであり、ハードウェアクロック(リアルタイムクロック、RTC)は、システムの電源がオフのときでも時間を保持するために使用されます。

 これらのクロックを適切に管理し、同期させることはシステム管理者にとって重要なタスクです。そのために使用される主要なツールの一つがtimedatectlコマンドです。timedatectlコマンドは、システムクロックとハードウェアクロックの時刻設定、タイムゾーンの設定、およびNTP(Network Time Protocol)の有効化や無効化を行うための強力なツールです。

timedatectl コマンドの概要

 timedatectlコマンドは、Linuxシステムの時刻とタイムゾーンの設定を管理するための強力なツールです。このコマンドは、システムクロックとハードウェアクロックの両方を同時に設定することができ、NTP(Network Time Protocol)の有効化や無効化も行えます。

【構文】
timedatectl [サブコマンド]

主なサブコマンドと説明

サブコマンド説明
status現在のシステムクロック、ハードウェアクロック、タイムゾーン、およびNTPの状態を表示します。
set-time YYYY-MM-DD HH:MM:SS指定した日時にシステムクロックとハードウェアクロックを設定します。
set-ntp yes|noNTPを使用するかどうかを設定します。
set-timezone タイムゾーン名タイムゾーンを設定します。
主なサブコマンドと説明

コマンドの使用例と解説

1.システムクロック、ハードウェアクロック、タイムゾーン、およびNTPの状態を表示する。

・「timedatectl status」コマンドを実行します

 このコマンドは現在のシステムクロック、ハードウェアクロック、タイムゾーン、およびNTPの状態を表示します。「timedatectl 」と入力しても同様の出力となります。

user01@ubuntu-vm:~$ timedatectl status
               Local time: 水 2024-07-17 00:45:28 JST # タイムゾーンに基づく現在の日時
           Universal time: 火 2024-07-16 15:45:28 UTC # 協定世界時基づく現在の日時
                 RTC time: 火 2024-07-16 15:45:28 # ハードウェアクロックの日時
                Time zone: Asia/Tokyo (JST, +0900) # タイムゾーン
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

2.指定した日時にシステムクロックとハードウェアクロックを設定する。

・「timedatectl set-time "2024-07-16 15:30:00"」コマンドを実行します

このコマンドはシステムクロックとハードウェアクロックを指定した日時に設定します。

user01@ubuntu-vm:~$ timedatectl set-time "2024-07-16 15:30:00"
Failed to set time: Automatic time synchronization is enabled

 「Failed to set time: Automatic time synchronization is enabled」とエラーが表示される場合は、「3」の操作を行います。

3.自動日時設定を無効にする。

 「2」の操作で「Failed to set time: Automatic time synchronization is enabled」とエラーが表示される場合は、以下の操作を行います。

・「timedatectl set-ntp no」コマンドを実行します。

このコマンドはNTP同期を無効にします。noを指定することでNTP同期を無効にできます。

user01@ubuntu-vm:~$ timedatectl set-ntp no

・再度「timedatectl set-time "2024-07-16 15:30:00"」コマンドを実行します

今度は、コマンドが成功します。

user01@ubuntu-vm:~$ timedatectl set-time "2024-07-16 15:30:00"

4.NTP同期を有効にする。

・「timedatectl set-ntp yes」コマンドを実行します

このコマンドはNTP同期を有効にします。yesを指定することでNTP同期を有効にできます。

これで、自動的にNTPサーバーと時刻同期が行われるようになります

user01@ubuntu-vm:~$ timedatectl set-ntp yes

まとめ

 timedatectlコマンドは、システムの時刻とタイムゾーンの設定を一元管理するための便利なツールです。statusサブコマンドを使用して現在の設定状況を確認し、set-timeサブコマンドでシステムクロックとハードウェアクロックの時刻を同時に設定することができます。また、set-ntpサブコマンドを使用してNTP同期の有効化や無効化を簡単に行うことができます。これにより、システムの時刻管理が一層簡単かつ正確になります。