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





