Linux管理・運用の基本
システム管理者のための実践ガイド
システム管理者のための実践ガイド
システムログの正確性、ファイル更新時刻の一貫性、そして分散システムにおける連携。これらすべてにおいて、Linuxの時刻管理は基盤となります。特に、異なる地域にサーバーを配置したり、複数のサーバーで協調動作を行うシステムでは、時刻のずれは深刻な問題を引き起こす可能性があります。
この記事では、Linuxにおけるタイムゾーンの設定と、ネットワーク経由で時刻を同期するNTP(Network Time Protocol)の設定について、その基本とコマンドの使い方を解説します。
Linuxシステムで現在の時刻やタイムゾーンを確認するには、timedatectl
コマンドが便利です。
timedatectl
このコマンドを実行すると、現在のローカル時刻、UTC(協定世界時)時刻、タイムゾーン、NTP同期の状態などが表示されます。
Local time: 水 2025-07-30 10:52:29 JST
Universal time: 水 2025-07-30 01:52:29 UTC
RTC time: 水 2025-07-30 01:52:30
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
タイムゾーンを変更したい場合は、まず利用可能なタイムゾーンのリストを確認し、その後設定を行います。
利用可能なタイムゾーンの確認:
timedatectl list-timezones | grep Asia/
日本であれば「Asia/Tokyo」が一般的です。
タイムゾーンの設定:
sudo timedatectl set-timezone Asia/Tokyo
変更後、再度timedatectl
を実行して設定が反映されたか確認しましょう。
補足: タイムゾーン設定の変更は、多くの場合はログインセッションの再開やシステム再起動は不要ですが、時刻情報に依存する一部のアプリケーションでは再起動が必要なこともあります。
NTPは、ネットワーク経由で正確な時刻情報を提供するプロトコルです。Linuxではsystemd-timesyncd
(systemd環境)やntpd
、chrony
などのNTPクライアントを利用して時刻同期を行います。現在主流のLinuxディストリビューションでは、systemd-timesyncd
がデフォルトで有効になっていることが多いです。
※ディストリビューションや環境によっては、ntpd
やchrony
が使われている場合があります。その場合は各サービスの状態確認・設定方法を確認しましょう。
timedatectl
コマンドでNTP同期の状態を確認できます。System clock synchronized: yes
かつNTP service: active
となっていれば、正常に同期が行われています。
timedatectl
もしNTPサービスが停止している場合は、以下のコマンドで有効化・起動できます。
sudo timedatectl set-ntp true
無効化する場合はset-ntp false
とします。
NTPサーバーの指定を変更したい場合(systemd-timesyncdの例)
デフォルト以外のNTPサーバーを指定したい場合は、/etc/systemd/timesyncd.conf
ファイルを任意のエディタで編集します。
sudo nano /etc/systemd/timesyncd.conf
ファイルを開き、[Time]
セクションにNTP=
の行を追加または編集します。
[Time]
NTP=ntp.nict.jp
#FallbackNTP=0.pool.ntp.org 1.pool.ntp.org
NTP=
には優先して利用したいNTPサーバーを、FallbackNTP=
にはそれが利用できない場合の代替サーバーを記述します。
設定を保存したら、systemd-timesyncd
サービスを再起動して変更を適用します。
sudo systemctl restart systemd-timesyncd
複数のNTPクライアント(systemd-timesyncd
、chrony
、ntpd
など)が同時に動作していると、時刻同期に不具合が出る場合があります。どちらか一方のみ有効化し、他は無効にしましょう。
chrony:
設定ファイルは通常/etc/chrony.conf
です。NTPサーバーはserver
ディレクティブで指定します。
# /etc/chrony.conf の例
server ntp.nict.jp iburst
状態確認にはchronyc sources
コマンドが利用できます。
ntpd:
設定ファイルは通常/etc/ntp.conf
です。NTPサーバーはserver
ディレクティブで指定します。
# /etc/ntp.conf の例
server ntp.nict.jp
状態確認にはntpq -p
コマンドが利用できます。
firewalld
やufw
)がUDPポート123(NTP)をブロックしていないか確認しましょう。timedatectl
で表示されるNTPサーバーのアドレスが正しいか、または到達可能か確認してください。sudo timedatectl set-ntp true
で有効化を試みてください。chrony
やntpd
など、他のNTPクライアントがインストールされている場合は、そちらのサービスが起動しているか確認し、必要に応じてsystemctl enable --now chronyd
やsystemctl enable --now ntpd
などで起動・有効化してください。各NTPサービスの状態を確認することで、起動状況やエラーメッセージを把握できます。
# systemd-timesyncdの場合
systemctl status systemd-timesyncd
# chronyの場合
systemctl status chronyd
# ntpdの場合
systemctl status ntpd
それぞれのサービスの状態を確認し、異常がないかチェックしてください。
NTPによる自動同期がうまくいかない場合や、一時的に手動で時刻を合わせたい場合は、date
コマンドやchronyc
コマンドを使用できます。ただし、手動での時刻設定は時刻のずれを引き起こしやすく、運用では極力避けるべきです。基本的にNTPによる自動同期を利用しましょう。
# 例:chronydがインストールされている場合、強制的にNTPサーバーから同期
sudo chronyc -s makestep
# 例:dateコマンドで手動設定(非推奨、慎重に)
# sudo date -s "YYYY-MM-DD HH:MM:SS"
# 例:sudo date -s "2025-07-30 11:00:00"
注意: ntpdate
は古いコマンドであり、chrony
やntpd
のような継続的な同期を行うデーモンとは異なり、一度だけ時刻を合わせるものです。現在のシステムではtimedatectl
またはchrony
の使用が推奨されます。
ping ntp.nict.jp
で疎通確認後、nc -uzv ntp.nict.jp 123
(netcatコマンド)などでUDPポートへの接続可否を確認できます。ファイアウォールが原因の場合が多いです。ntp.example.local
)を/etc/systemd/timesyncd.conf
などに指定し、ファイアウォールやDNSの名前解決設定も確認しましょう。Linuxシステムにおける時刻管理は、安定した運用に不可欠です。timedatectl
コマンドでタイムゾーンの確認と設定を行い、NTPサービスを適切に利用することで、常に正確な時刻を維持できます。時刻のずれが発生した場合は、まずはtimedatectl
で状態を確認し、NTPサービスが正常に動作しているか確認することがトラブルシューティングの第一歩となります。
この記事がLinuxの時刻管理について理解を深める一助となれば幸いです。
ご覧いただきありがとうございました。
次回はホスト名の変更と確認方法について解説します。