Linuxでtimedatectlコマンドを使用する方法
公開: 2022-06-16 Linuxのtimedatectl
コマンドを使用すると、システムクロックとリアルタイムクロックの時刻、日付、およびタイムゾーンを設定できます。 少し時間を取ってください。すべてがどのように機能するかを説明します。
それはすべて相対的です
コンピューターの時間の扱いは、非常に簡単であると期待できるものの1つです。 少なくとも、あなたがそれを調べ始めるまでは。
Linuxシステムクロックは、Unixエポックからの秒数をカウントします。 これは、UTCの1970年1月1日の00:00:00でした。 UTCは協定世界時の略ですが、通常、協定世界時または単に協定世界時と呼ばれます。 これは、世界が時間を管理および規制する時間基準です。 異なるタイムゾーンは、UTCにオフセットを適用して、現地時間を取得します。 一部のタイムゾーンはUTCより進んでおり、他のタイムゾーンは遅れています。
Linuxコンピュータのシステムクロックはソフトウェアベースです。 明らかに、コンピュータの電源がオフのときは実行できません。 別の時計、バッテリーでバックアップされたハードウェアベースのリアルタイムクロックは、コンピューターの電源がオフのときに実行できます。 その目的は、Linuxが起動するたびにシステムクロックに何時かを知らせることです。 ネットワークタイムプロトコル(NTP)サーバーへのアクセスが可能でない限り。
NTPサーバーは、正確な時刻情報を要求するコンピューターに提供するサーバーです。 コンピューターまたはラップトップを起動し、インターネットアクセスがない場合、またはNTPサーバーを使用するように構成されていない場合は、NTPサーバーの代わりにリアルタイムクロックを使用してシステムクロックを準備します。
システムクロックは常にUTCです。 現地時間を取得する必要があるアプリケーションは、次のことを行う必要があります。
- システムクロックにアクセスしてUTCを取得する
- それがどのタイムゾーンにあるかを知り、正しいオフセットを適用します
- 夏時間が有効であるかどうかを考慮に入れてください
UTCから現地時間への変換は、システムクロックではなく、アプリケーションによって行われます。 または、より正確には、変換は、アプリケーションがリンクされている日時ライブラリによって実行されます。 そのため、コンピュータがタイムゾーン、UTC時間、Unixエポックから何秒経過したか、夏時間が有効かどうかを把握することが重要です。
systemdベースのLinuxディストリビューションでは、 timedatectl
コマンドを使用して、これらの設定と値を表示または変更します。
timedatectl入門
現在のデータと時刻およびその他の値を表示するには、 status
演算子を指定してtimedatectl
コマンドを使用します。
timedatectlステータス
実際には、ステータスを削除しても同じ出力が得られます。
timedatectl
出力の両方のセットは次のことを示しています。
- 現地時間:コンピューターがタイムゾーンに応じて考えている時間。
- 協定世界時:UTC時間。
- RTC時間:リアルタイムクロックが使用している時間。 通常、これはUTCです。
- タイムゾーン:設定されたタイムゾーンに関する情報。
- 同期されたシステムクロック:システムクロックがNTPサーバーと同期されているかどうか。
- NTPサービス:コンピューターのNTPサービスがアクティブかどうか。
- ローカルTZのRTC :リアルタイムクロックがUTCではなくローカル時間を使用しているかどうか。
次のように入力すると、 timedatectl
コマンドがサポートするタイムゾーンの数を確認できます。
timedatectl list-timezones | wc -l
これは、世界に存在するタイムゾーンよりもはるかに多くのことです。 出力をgrep
にパイプし、「America」のエントリをフィルターで除外し、それをless
にパイプすると、より管理しやすいリストをスクロールできます。
timedatectl list-timezones | grep "America /" | 以下
そのリストを確認すると、「アメリカ」が可能な限り広い意味を持っていることがわかります。 次に気付くのは、ほとんどのエントリが実際のタイムゾーンではないことです。
タイムゾーンの設定
timedatectl
でサポートされているフィルタリングされていないタイムゾーンのリストを見ると、場所とタイムゾーンが表示されます。 タイムゾーンを設定するには、ESTやGMTなどの名前で指定するか、ロンドンやニューヨークなど、同じタイムゾーンの場所を選択できます。
タイムゾーンをリセットすることは頻繁に行うことではありませんが、おそらく家に引っ越したか、しばらく離れて仕事をしていて、ラップトップをローカライズしたいと思っています。 タイムゾーンをリセットする必要がある場合は、使用するタイムゾーン内の場所を選択してください。
このコンピューターを、エドモントンと同じタイムゾーンである山岳部標準時に設定します。 次に、設定がどのように変更されたかを確認します。
timedatectl set-timezone "America / Edmonton"
timedatectl
タイムゾーンが変更され、現地時間が変更され、UTCからのオフセットが増加しました。
関連: Linuxでパイプを使用する方法
時刻と日付を手動で設定する
時刻と日付を手動で設定することは可能ですが、通常はその必要はありません。 時刻同期とNTPを使用することは、コンピューターの時刻と日付を正確に保つための推奨される方法です。 コンピュータの日付または時刻を変更しようとすると、おそらくエラーが発生し、時刻の同期が使用されていることを通知します。
timedatectl set-time 10:30:00
次のコマンドを使用して、時刻同期サービスをオフにします。
sudo systemctl stop systemd-timesyncd.service
timedatectl
set-time演算子を使用して、時刻、日付、またはその両方を設定できます。 日付は年-月-日の順序でYYY-MM-DDであり、時間は時間-分-秒の順序でHH:MM:SSです。 次のコマンドで時刻と日付を設定します。
timedatectl set-time "2022-01-30 10:30:00"
次に、 timedatectl
を使用して、変更が行われたことを確認します。
timedatectl
日時が変更になりました。 また、コンピューターが誤ったUTC時間を使用していることに注意してください。 また、システムクロックが同期されておらず、NTPサービスが非アクティブであることが通知されます。
インターネットにアクセスできる場合は、時刻同期サービスを復元するとすぐに時刻が取得され、すべての詳細が正しくリセットされます。
sudo systemctl start systemd-timesyncd.service
timedatectl
RTC:UTCまたはLTZ?
リアルタイムクロックをUTCではなくローカルタイムゾーンの時刻に設定することは可能ですが、お勧めできません。 変更を加えると、これが将来システムに与える可能性のある悲惨な影響についての警告が表示されます。
この方法を紹介する理由は、時間設定で奇妙な問題が発生しているマシンに遭遇する可能性があるためです。 これは、リアルタイムクロックをUTCに戻す方法です。
まず、ローカルタイムゾーンに設定する必要があります。
timedatectl set-local-rtc 1
次に、 timedatectl
にステータスを尋ねます。
timedatectl
彼らは自分の気持ちをはっきりさせたと思います。
リアルタイムクロックをUTCに復元するには、次のコマンドを使用します。
timedatectl set-local-rtc 0
それを設定し、それを忘れる
Linuxディストリビューションのインストール中にエラーが発生した場合、または再配置した場合を除いて、通常、システムとリアルタイムクロックの設定を変更する理由はありません。
システムクロックをタイムゾーンに設定し、リアルタイムクロックをUTCに設定し、システムがネットワークタイムプロトコルサーバーをポーリングしていることを確認します。 これは、ほとんどのインストール後のデフォルトの状態です。
それらがすべて設定されている場合、コンピュータのタイムシステムは自分自身の面倒を見るでしょう。
関連: Linuxサーバーの時刻をネットワークタイムサーバー(NTP)と同期する方法