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タイム、タイムゾーン、その他の便利な情報が表示されます。
ローカルタイム(システムのタイムゾーンに基づく)、ユニバーサルタイム、RTCタイムの項目は自明だが、タイムゾーンの項目は、現在システムに設定されているタイムゾーンを指す。
その他の項目は、システムクロックがNTPサーバーと同期しているかどうか(インターネットを使用したリアルタイム更新のため)、NTPサービスがアクティブかどうか、RTCがUTCではなくローカルタイムを使用しているかどうかを知らせます。set-timezoneでシステムのタイムゾーンを更新する
Linuxシステムが使用しているタイムゾーンによっては、システム時計が正しいローカル時刻を表示しないことがあります。
システムが使用しているタイムゾーンを確認するには、前のセクションの出力のタイムゾーン行を参照してください。例えば、私のシステムはUS/Eastern(EST、-0500)のタイムゾーンを使用しています。オフセットの-0500は 、UTC(協定世界時)との差を意味します。
タイムゾーンを変更したい場合は、まずシステムに使用可能なタイムゾーンのリストを問い合わせてください:timedatectl list-timezones
長いリストが生成され、スクロールするのに時間がかかります。より実用的な出力を得るには、このコマンドを変更して、結果をお住まいの地域や国に限定することができます:
timedatectl list-timezones| grep "America/"|less
システムの現在のタイムゾーンを変更するには、次のようにset-timezone
パラメーターを使うことができる:
timedatectl set-timezone"アメリカ/シカゴ"
コマンドの実行には昇格権限が必要なため、システムからパスワードの入力を求められることがある。完了したら、timedatectlを
もう一度実行するだけで、変更を確認できる。
前のコマンドで更新された新しいタイムゾーンが出力されているのがわかるだろう。お好みであれば、Ubuntuや他のLinuxディストロで複数のタイムゾーンを設定し、一度に複数のタイムゾーンを素早く見ることもできる。
set-timeを使って手動でシステムの日付と時刻を設定する
ほとんどの場合、システムは起動時にシステムクロックをNTPサーバーと同期させるので、システムの日付と時刻は常に正確です。しかし、システムがインターネットにアクセスできない場合でも、set-time
パラメータを使用して手動で新しい日付や時刻を設定することができます。
sudosystemctl disable--nowchronyd
次に、以下のコマンドを使って新しい日付と時刻を設定する:
timedatectl set-time"2023-11-16 10:00:00"
timedatectlでリアルタイムクロックを設定する
システムのリアルタイム・クロックを設定することもできます。デフォルトでは、RTCは協定世界時(UTC)に同期しているが、ローカルタイムゾーンに設定することも可能だ。
注意点として、RTCをローカルタイムゾーンに維持すると、タイムゾーンの変更やサマータイム調整でさまざまな問題が発生する可能性があります。また、RTCをローカルタイムゾーンに変更すると、システムが同様の警告を表示するかもしれません。 いずれにしても、RTCをローカルタイムゾーンに設定したい場合は、次のコマンドを実行してください:timedatectl set-local-rtc1
RTCを再びUTCに戻したい場合は、同じコマンドで1を
0に
置き換えるだけです。
注:WindowsとLinuxをデュアルブートしている場合、システムクロックが同期されないことがあります。ここでは、それを修正する方法を説明します。
NTPでシステムクロックを同期させる
NTP(ネットワークタイムプロトコル)は、インターネットを介したコンピュータの広いネットワーク間でクロックを同期させるためのインターネットプロトコルです。参加するすべてのコンピュータをUTCの数ミリ秒以内に同期させることを目的としています。
システムクロックをNTPサーバーと同期させるには、システムにNTPがインストールされている必要があります。インストール・コマンドを実行するだけです:sudo apt-get -y installntp
NTPサーバーとの自動同期を有効にするには、次のコマンドを実行します:
timedatectl set-ntptrue
同様に、次のコマンドを使ってNTP同期を無効にすることもできます:timedatectl set-ntp false
。
timedatectlでシステムの時刻と日付を管理する
timedatectl
コマンドは、システムクロックやRTCコンフィギュレーションを調整したり、引っ越しや旅行で必要なタイムゾーンを設定したりするのに便利なツールです。常に移動しているのであれば、これらのタイムゾーンコンバータを活用して、簡単にタスクをスケジューリングできるようにしたい。
全てのスクリーンショットはTanveer Singhによるものです。