ウェブサイト検索

Linuxで時間、タイムゾーン、時計の同期を設定する方法


この記事では、timedatectl、systemd-timesyncd、chrony を使用して、Linux システムの時計の時間、タイムゾーンを設定し、NTP と同期する方法を学びます。

「timedatectl」コマンドは、RHELベースおよびDebianベースのディストリビューション向けのユーティリティであり、「systemd」システムおよびサービスマネージャの一部であり、「sysvinit」デーモンベースのLinuxディストリビューションで使用されていた古い伝統的な date コマンドの代替として機能します。

timedatectl コマンドを使用すると、システムクロックとその設定の構成を照会および変更できます。このコマンドを使用して、現在の日付、時刻、タイムゾーンを設定または変更したり、リモート NTP サーバーとの自動システムクロック同期を有効にすることができます。

このチュートリアルでは、timedatectl、systemd-timesyncd、chrony を使用して、端末から 日付、時刻、タイムゾーン を設定し、NTP で時刻を同期する ことで、Linux システム上で時間を管理する方法を紹介します。

Linuxサーバーやシステムで正しい時刻を維持することは常に良い習慣であり、次のような利点があります:

  • ほとんどのタスクが時間によって制御されているため、システムタスクの適時の運用を維持する。
  • システム上のイベントやその他の情報を記録するための正確な時間。
  • 分散システムとアプリケーションのための適切な同期。
  • <strong>Kerberos</strong>や<strong>SSL</strong>/<strong>TLS</strong>証明書の検証のようなセキュリティプロトコルに必要不可欠です。

Linuxでローカルタイムゾーンを見つけて設定する方法

1. システムの現在の時刻と日付を表示するには、コマンドラインから timedatectl コマンドを使用します。

timedatectl  status

上記の出力では、RTC 時間はハードウェアクロックの時間です。

2. あなたのLinuxシステムの時間は常にシステムに設定されているタイムゾーンによって管理されます。現在のタイムゾーンを確認するには、次のように行います。

timedatectl 
OR
timedatectl | grep Time

3. 利用可能なすべてのタイムゾーンを表示するには、以下のコマンドを実行してください:

timedatectl list-timezones

4. 自分の場所に応じた現地のタイムゾーンを調べるには、次のコマンドを実行してください。

timedatectl list-timezones |  egrep  -o "Asia/B.*"
timedatectl list-timezones |  egrep  -o "Europe/L.*"
timedatectl list-timezones |  egrep  -o "America/N.*"

5. Linuxでローカルタイムゾーンを設定するには、以下のようにset-timezoneスイッチを使用します。

sudo timedatectl set-timezone "Asia/Kolkata"
timedatectl status

常に協定世界時(UTC)を使用し、設定することが推奨されます。

sudo timedatectl set-timezone UTC
timedatectl status

正しいタイムゾーン名を入力する必要があります。さもなければ、タイムゾーンを変更する際にエラーが発生する可能性があります。以下の例では、タイムゾーン「Asia/Kolkata」が正しくないため、エラーが発生しています。

failed to set time zone: invalid timezone

Linuxで時間と日付を設定する方法

次のようにして、timedatectl コマンドを使用してシステムの日付と時刻を設定できます:

Linuxで時間を設定する

6.時間のみを設定するには、HH:MM:SS(時、分、秒)の時間形式とともに、set-timeスイッチを使用できます。

sudo timedatectl set-time 12:25:30
timedatectl status

上記のように日付を設定すると、次のエラーが発生する場合があります:

Failed to set time: Automatic time synchronization is enabled

このエラーは、自動時刻同期(NTP)が有効になっており、手動での時刻変更ができないために発生します。

修正するには、まずNTPを無効にし、その後時間を設定してください。

sudo timedatectl set-ntp false
sudo timedatectl set-time 12:25:30
timedatectl status

7.日付と時刻の両方を設定するには、set-time スイッチを使用し、日付を YYYY-MM-DD(年、月、日)の形式で、時刻を HH:MM:SS(時、分、秒)の形式で指定します:

sudo timedatectl set-time '2026-01-23 12:25:30'

Linuxでハードウェアクロックを見つけて設定する方法

8. ハードウェアクロックを協定世界時(UTC)に設定するには、次のように set-local-rtc boolean-value オプションを使用します:

まず、ハードウェアクロックがローカルタイムゾーンに設定されているか確認してください:

timedatectl | grep local

ハードウェアクロックをローカルタイムゾーンに設定してください:

sudo timedatectl set-local-rtc 1

ハードウェア時計を協定世界時 (UTC) に設定してください:

sudo timedatectl set-local-rtc 0

注意: RTC を現地時間に設定することは推奨されず、夏時間の調整に問題を引き起こす可能性があるため、RTC は UTC のままにしておくのが最適です。

リモートNTPサーバーとLinuxシステムクロックを同期する

NTPはネットワーク時間プロトコルを意味し、コンピュータ間でシステムクロックを同期させるために使用されるインターネットプロトコルです。

timedatectl ユーティリティは、NTP を使用してリモートのサーバーグループと Linux システムクロックを自動的に同期することを可能にします。

ほとんどの現代のLinuxディストリビューションは、NTP同期のために異なる実装を使用します:

  • systemd-timesyncd:システムに組み込まれた軽量のSNTP(Simple NTP)クライアントで、ほとんどのデスクトップおよび単一サーバーのセットアップに適しています。
  • chrony:クライアントおよびサーバーの両方として動作できるフル機能のNTP実装。断続的なネットワーク接続に対してより優れた処理を行い、より正確です。

systemd-timesyncd の使用

リモートのNTPサーバーと自動的に時刻を同期させるには、ターミナルで次のコマンドを入力してください。これにより、systemd-timesyncdサービスが有効化され、起動されます。

sudo timedatectl set-ntp true

NTP時間同期を無効にするには、ターミナルで次のコマンドを入力してください。

sudo timedatectl set-ntp false

同期状況を確認するには:

timedatectl status

「システムクロックの同期: はい」および「NTPサービス: アクティブ」と表示されるはずです。

chrony を使用する(サーバー向け推奨)

もしサーバーを運用している場合や、より信頼性の高い時刻同期が必要な場合、chrony がより適した選択であり、特に以下のような場合に優れています:

  • 継続的に稼働しないシステム(ノートパソコン、デスクトップ)。
  • サーバーは高い精度を要求します。
  • 断続的にネットワークに接続されるシステム。
  • 時間の一貫性が重要なクラスター環境。

まず、chrony をインストールします(まだインストールされていない場合):

sudo apt install chrony   [On Debian-based systems]
sudo dnf install chrony   [On RHEL-based systems]

注意:chrony をインストールすると、競合を防ぐために systemd-timesyncd が自動的に無効になります。

インストール後、有効化、起動、同期状態の確認を行います:

sudo systemctl enable --now chronyd
timedatectl status

デフォルトのものではなく自分の NTP サーバーを使用するには、Chrony の設定ファイルを編集する必要があります。

sudo nano /etc/chrony/chrony.conf
OR
sudo nano /etc/chrony/sources.d/custom.sources

お好みのNTPサーバーを追加してください(NTPサーバーのリストはNTPプールプロジェクトから入手できます)。

pool 0.pool.ntp.org iburst
pool 1.pool.ntp.org iburst
pool 2.pool.ntp.org iburst

変更後に chrony を再起動する:

sudo systemctl restart chronyd

NTP同期に関する重要な注意事項

  • 複数の NTP 実装を同時に実行することはできないため、systemd-timesyncd または chrony のいずれかを選択してください。
  • systemd-timesyncd はクライアント専用の実装であり、他のシステムに時刻を提供することはできません。
  • chrony は、ローカルネットワークのために時間クライアントおよび時間サーバーの両方として機能することができます。
  • 本番サーバーや重要なインフラストラクチャでは、systemd-timesyncdよりも一般的にchronyが推奨されます。
  • NTPは、送信接続のためにUDPポート123を開く必要があります。
要約

これらはこのチュートリアルで説明されている非常に簡単な例であり、さまざまなLinuxシステムの時計やタイムゾーンを設定する際に役立つことを願っています。

このツールについて詳しく知りたい場合は、timedatectl のマニュアルページを参照してください。

man timedatectl

この記事について何か言いたいことがあれば、追加する情報があれば遠慮なくコメントを残してください。