Linux Timedatectl Command Featured

Linuxで日付と時刻の設定を正確に保つことは、システム・タスクを円滑に機能させるために非常に重要である。Linuxのtimedatectlコマンドを使えば、システム時計とそれに関連する様々な設定を照会したり変更したりできる。これはsystemdの一部として提供され、システムが正しい日付と時刻を報告するようにする簡単な方法を提供します。ここでは、timedatectlを使ってLinuxマシンの時刻と日付をコントロールする方法を紹介します。

Tip:systemd timer を cron の代わりとして使うこともできます。

システムクロックとリアルタイムクロック(RTC)の比較

Linux システムは、システムクロックとリアルタイムクロックの2つの異なるクロックを使って時間を管理します。

システム・クロック またはソフトウェア管理クロックは、オペレーティング・システムまたはLinuxカーネルによって管理されます。システム起動時に初期値を取得するには、リアルタイム・クロックの助けが必要です。

リアルタイム・クロック(RTC)はマザーボード上のハードウェア・クロックで、システムの電源がオフになってもアクティブなままです。バッテリーを使用して継続的に動作しているため、時刻を追跡し、ブート中に正しい時刻をシステムに通知することができます。

timedatectlコマンドは、これら2つのクロックを管理するのに役立ちます。

timedatectlでシステムの日付と時刻を表示する

timedatectlコマンドは、最も便利なLinuxコマンドの1つです。Linuxシステムの現在の日付と時刻を簡単に確認するには、timedatectl コマンドを他のパラメーターなしで入力し、Enterキーを押します。出力には、ローカルタイム、ユニバーサルタイム、RTCタイム、タイムゾーン、その他の便利な情報が表示されます。

Linux terminal screenshot showing timedatectl output

ローカルタイム(システムのタイムゾーンに基づく)、ユニバーサルタイムRTCタイムの項目は自明だが、タイムゾーンの項目は、現在システムに設定されているタイムゾーンを指す。

その他の項目は、システムクロックがNTPサーバーと同期しているかどうか(インターネットを使用したリアルタイム更新のため)、NTPサービスがアクティブかどうか、RTCがUTCではなくローカルタイムを使用しているかどうかを知らせます。

set-timezoneでシステムのタイムゾーンを更新する

Linuxシステムが使用しているタイムゾーンによっては、システム時計が正しいローカル時刻を表示しないことがあります。

システムが使用しているタイムゾーンを確認するには、前のセクションの出力のタイムゾーン行を参照してください。例えば、私のシステムはUS/Eastern(EST、-0500)のタイムゾーンを使用しています。オフセットの-0500は 、UTC(協定世界時)との差を意味します。

タイムゾーンを変更したい場合は、まずシステムに使用可能なタイムゾーンのリストを問い合わせてください:

timedatectl list-timezones

長いリストが生成され、スクロールするのに時間がかかります。より実用的な出力を得るには、このコマンドを変更して、結果をお住まいの地域や国に限定することができます:

timedatectl list-timezones| grep "America/"|less
Linux terminal screenshot showing the various time zones

システムの現在のタイムゾーンを変更するには、次のようにset-timezoneパラメーターを使うことができる:

timedatectl set-timezone"アメリカ/シカゴ"

コマンドの実行には昇格権限が必要なため、システムからパスワードの入力を求められることがある。完了したら、timedatectlをもう一度実行するだけで、変更を確認できる。

Linux terminal screenshot showing how to change time zone

前のコマンドで更新された新しいタイムゾーンが出力されているのがわかるだろう。お好みであれば、Ubuntuや他のLinuxディストロで複数のタイムゾーンを設定し、一度に複数のタイムゾーンを素早く見ることもできる。

set-timeを使って手動でシステムの日付と時刻を設定する

ほとんどの場合、システムは起動時にシステムクロックをNTPサーバーと同期させるので、システムの日付と時刻は常に正確です。しかし、システムがインターネットにアクセスできない場合でも、set-timeパラメータを使用して手動で新しい日付や時刻を設定することができます。

手動でシステムの日付と時刻を設定するには、まずNTPサーバーとの同期を無効にします:

sudosystemctl disable--nowchronyd

次に、以下のコマンドを使って新しい日付と時刻を設定する:

timedatectl set-time"2023-11-16 10:00:00"
Linux terminal screenshot showing how to set date and time manually

timedatectlでリアルタイムクロックを設定する

システムのリアルタイム・クロックを設定することもできます。デフォルトでは、RTCは協定世界時(UTC)に同期しているが、ローカルタイムゾーンに設定することも可能だ。

注意点として、RTCをローカルタイムゾーンに維持すると、タイムゾーンの変更やサマータイム調整でさまざまな問題が発生する可能性があります。また、RTCをローカルタイムゾーンに変更すると、システムが同様の警告を表示するかもしれません。

いずれにしても、RTCをローカルタイムゾーンに設定したい場合は、次のコマンドを実行してください:

timedatectl set-local-rtc1
Linux terminal screenshot showing how to set RTC time

RTCを再びUTCに戻したい場合は、同じコマンドで1を 0に置き換えるだけです。

WindowsとLinuxをデュアルブートしている場合、システムクロックが同期されないことがあります。ここでは、それを修正する方法を説明します。

NTPでシステムクロックを同期させる

NTP(ネットワークタイムプロトコル)は、インターネットを介したコンピュータの広いネットワーク間でクロックを同期させるためのインターネットプロトコルです。参加するすべてのコンピュータをUTCの数ミリ秒以内に同期させることを目的としています。

システムクロックをNTPサーバーと同期させるには、システムにNTPがインストールされている必要があります。インストール・コマンドを実行するだけです:

sudo apt-get -y installntp
Linux terminal screenshot showing how to synchronize time with NTP

NTPサーバーとの自動同期を有効にするには、次のコマンドを実行します:

timedatectl set-ntptrue
Linux terminal screenshot showing how to enable NTP service

同様に、次のコマンドを使ってNTP同期を無効にすることもできます:timedatectl set-ntp false

timedatectlでシステムの時刻と日付を管理する

timedatectlコマンドは、システムクロックやRTCコンフィギュレーションを調整したり、引っ越しや旅行で必要なタイムゾーンを設定したりするのに便利なツールです。常に移動しているのであれば、これらのタイムゾーンコンバータを活用して、簡単にタスクをスケジューリングできるようにしたい。

全てのスクリーンショットはTanveer Singhによるものです。

Akira
Akiraは情熱的なゲーマーであり、製品レビュアーです。ゲームをしていないときは、最新のゲーミングアクセサリーを試したり、製品のレビューをしていることが多い。彼の分かりやすいスタイルは、ゲーマーが自分のニーズに最も適した製品を簡単に判断できるようにするものです。また、技術的な問題にも精通しており、その解決方法も知っている。