時刻のズレはサーバー運用における「静かな障害」で、放置するとシステム全体の信頼性に影響します。
この記事では、現代Linuxにおける時刻同期デーモン chronyd の設定と、その管理コマンドである chronyc の実践的な使い方を解説します。
インストールから設定ファイルの読み方、オフセット確認、トラブルシュートまで、RHEL 9.4 / AlmaLinux 9.4 / Ubuntu 24.04 LTS で動作確認した手順を紹介します。
この記事のポイント
・chronyc tracking でサーバーの時刻オフセットをリアルタイム確認できる
・/etc/chrony.conf の pool 行で NTP サーバーを指定し、systemctl で反映させる
・chronyc sources -v で各 NTP ソースの状態と選択状況を一覧表示できる
・「Cannot talk to daemon」は chronyd 未起動が原因で systemctl start で解決できる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
chronyd と chronyc の基本概念
NTP(Network Time Protocol)による時刻同期は、Linuxサーバーの安定運用に欠かせない仕組みです。RHEL 8 以降では、従来の ntpd に代わって chronyd(chrony デーモン)が標準採用されています。
chronyd と chronyc の関係は次のとおりです。
・chronyd:バックグラウンドで動作する時刻同期デーモン。NTP サーバーと通信して時刻を調整する
・chronyc:chronyd を操作・監視するコマンドラインクライアント。対話モードとワンショット実行の両方に対応する
ntpd との主な違い:
ntpd は時刻のズレが大きい場合、調整を拒否してしまうことがあります。
一方、chronyd はネットワーク接続が断続的な環境や仮想マシン上でも高速かつ正確に時刻を同期できるよう設計されています。
とくにクラウド環境(AWS EC2、Azure VM、GCP など)では chronyd が推奨されています。
chronyd のインストールと起動確認
1. インストール(パッケージ未導入の場合)
RHEL 9 / AlmaLinux 9 / Rocky Linux 9 では、デフォルトで chrony がインストールされています。念のため確認して、未導入であれば以下を実行します。
# RHEL/AlmaLinux/Rocky Linux $ sudo dnf install chrony # Ubuntu 24.04 LTS $ sudo apt install chrony
2. サービスの有効化と起動
# サービスを有効化(OS再起動後も自動起動) $ sudo systemctl enable chronyd # サービスを起動 $ sudo systemctl start chronyd # 起動状態を確認 $ sudo systemctl status chronyd
* chronyd.service - NTP client/server Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; preset: enabled) Active: active (running) since Wed 2026-06-04 09:00:11 JST; 2h 15min ago Main PID: 987 (chronyd) Tasks: 1 (limit: 23180)
設定ファイル /etc/chrony.conf の読み方
chronyd の動作はすべて/etc/chrony.conf で制御されています。主要な設定項目を確認しましょう。
$ cat /etc/chrony.conf
# NTP サーバーのプール設定 pool 2.rhel.pool.ntp.org iburst # ドリフトファイル(時刻ズレの傾向を記録) driftfile /var/lib/chrony/drift # 起動時に時刻が大きくズレている場合に強制調整(秒) makestep 1.0 3 # ハードウェアクロック(RTC)を同期させる rtcsync # NTP 統計ログのディレクトリ logdir /var/log/chrony
・pool:接続先 NTP サーバーを指定する。
iburst を付けると起動直後の同期が高速化される・server:pool ではなく単一サーバーを指定する場合に使用する
・driftfile:ハードウェアクロックのズレ傾向(drift)を記録するファイル。chronyd の精度維持に重要
・makestep:起動時など大きなズレがある場合に即時修正する(例:1秒以上ズレていれば最初の3回のみ強制修正)
・rtcsync:定期的にハードウェアクロック(RTC)に時刻を書き戻す設定
AWS EC2 での設定例:
EC2 インスタンスでは、AWS の専用 NTP エンドポイントを使うことが推奨されます。
# /etc/chrony.conf(EC2向け推奨設定) server 169.254.169.123 prefer iburst
$ sudo systemctl restart chronyd
chronyc コマンドの基本的な使い方
1. tracking — 時刻同期の現在状態を確認する(最重要)
chronyc tracking は、chronyd の同期状態を詳細に表示するコマンドです。日常的な時刻ズレ確認にはまずこれを実行します。
$ chronyc tracking
Reference ID : D8EF2312 (ntp1.example-isp.jp) Stratum : 3 Ref time (UTC) : Wed Jun 04 00:10:45 2026 System time : 0.000035412 seconds slow of NTP time Last offset : -0.000012345 seconds RMS offset : 0.000023456 seconds Frequency : 12.345 ppm slow Residual freq : -0.001 ppm Skew : 0.678 ppm Root delay : 0.012345678 seconds Root dispersion : 0.001234567 seconds Update interval : 64.2 seconds Leap status : Normal
・System time:現在の時刻ズレ。
seconds slow はサーバー時刻が遅れている、seconds fast は進んでいる・Last offset:直前の同期で修正したズレ量
・Stratum:NTP 階層。1が最上位(原子時計直結)、数字が大きいほど間接参照。通常 2~4 が正常
・Leap status:うるう秒の状態。
Normal であれば問題なし・Frequency:クロックの進み・遅れの傾向(ppm = 100万分の1)
2. sources — NTP ソースの一覧と状態確認
$ chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* ntp1.example-isp.jp 2 6 377 45 +0.012ms[+0.008ms] +/- 5ms ^- ntp2.example-isp.jp 2 6 377 44 -0.234ms[-0.238ms] +/- 8ms ^+ ntp3.nict.go.jp 1 6 377 46 -0.056ms[-0.060ms] +/- 3ms
・*:現在選択されている(同期中の)NTP ソース
・+:選択候補として組み合わせに使用されているソース
・-:除外されているが接続は維持しているソース
・?:到達不能または応答がないソース
詳細情報を表示するには
-v オプションを使います。$ chronyc sources -v
3. sourcestats — 各 NTP ソースの統計情報
$ chronyc sourcestats
Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev =============================================================================== ntp1.example-isp.jp 8 5 517 -0.012 0.234 -0.002ms 0.015ms ntp3.nict.go.jp 8 4 518 0.005 0.189 +0.021ms 0.011ms
・NP:測定サンプル数
・Freq Skew:周波数推定の誤差。値が小さいほど安定している
・Offset:このソースとの時刻差の推定値
・Std Dev:オフセットの標準偏差。値が小さいほど精度が高い
4. makestep — 時刻の即時強制修正
chronyd は通常、時刻をゆっくりと調整(スルー調整)します。しかし、大きなズレがある場合は
makestep で即時修正できます。# 即時強制同期(sudo 必要) $ sudo chronyc makestep
200 OK
5. activity — NTP ソースのオンライン/オフライン状態
$ chronyc activity
200 OK 3 sources online 0 sources offline 0 sources doing burst (return to online) 0 sources doing burst (return to offline) 0 sources with unknown address
よく使う chronyc コマンドまとめ
| やりたいこと | コマンド |
|---|---|
| 時刻同期の現在状態を確認する | chronyc tracking |
| NTP ソースの一覧を確認する | chronyc sources |
| NTP ソースの詳細情報を確認する | chronyc sources -v |
| 各 NTP ソースの統計情報を確認する | chronyc sourcestats |
| 時刻を即時強制修正する | sudo chronyc makestep |
| NTP ソースのオンライン状態を確認する | chronyc activity |
| 対話モードで chronyc を起動する | chronyc |
| chronyd のログをリアルタイム確認する | sudo journalctl -u chronyd -f |
NTP サーバーの変更・追加方法
日本標準時(JST)の信頼できる NTP ソースとして、NICT(情報通信研究機構)の公開 NTP サーバーが推奨されます。# /etc/chrony.conf を編集 $ sudo vi /etc/chrony.conf
# 既存の pool 行をコメントアウトして NICT を追加する例 #pool 2.rhel.pool.ntp.org iburst server ntp.nict.jp iburst server ntp1.jst.mfeed.ad.jp iburst server ntp2.jst.mfeed.ad.jp iburst
# 変更を反映する $ sudo systemctl restart chronyd # 同期状態を確認する $ chronyc sources
・pool:DNS ラウンドロビンで複数の NTP サーバーを自動的に使い分ける。
2.rhel.pool.ntp.org のようなプールアドレスに使用する・server:単一の NTP サーバーに固定接続する。IPアドレスや特定ホスト名を指定する場合に使用する
トラブルシュート|よくあるエラーと対処法
「Cannot talk to daemon」が出る場合
chronyd サービスが停止しているときに発生するエラーです。$ chronyc tracking 506 Cannot talk to daemon
# chronyd の状態確認 $ sudo systemctl status chronyd # 停止していれば起動する $ sudo systemctl start chronyd # 再度確認 $ chronyc tracking
sources に「?」表示が多い場合(NTP サーバーへの到達不能)
$ chronyc sources MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^? ntp1.example-isp.jp 0 6 0 10y +0ns[ +0ns] +/- 0ns
・ファイアウォールで UDP 123番ポートがブロックされている
・NTP サーバーのホスト名が解決できない(DNS 障害)
・ネットワーク自体に問題がある
# UDP 123番ポートへの疎通確認(ntpdate -q を使う) $ sudo ntpdate -q ntp.nict.jp # firewalld でポートを開放する(RHEL系) $ sudo firewall-cmd --permanent --add-service=ntp $ sudo firewall-cmd --reload # DNS 解決の確認 $ dig ntp.nict.jp A
時刻のズレが解消されない場合
chronyc tracking で System time のズレが大きい場合は、makestep で即時修正します。# 即時強制修正 $ sudo chronyc makestep 200 OK # 修正後のズレを確認 $ chronyc tracking
/var/log/chrony/ 配下のログを確認します。# chronyd のログを確認する $ sudo journalctl -u chronyd --since "1 hour ago"
時刻がズレ続ける(仮想マシン環境)
VMware・KVM・VirtualBox などの仮想マシン環境では、ホスト OS のサスペンド・レジューム後に時刻が大きくズレることがあります。/etc/chrony.conf に以下を追加することで、起動時の大きなズレを自動修正できます。# 起動時に 10秒以上ズレていれば即時修正(最初の 5回まで) makestep 10 5
timedatectl との使い分け
時刻管理に関連するコマンドとしてtimedatectl もよく使われます。それぞれの役割の違いを整理します。| コマンド | 主な用途 | 特徴 |
|---|---|---|
chronyc tracking |
NTP 同期の精度・状態確認 | オフセット、stratum、drift など詳細な同期情報を表示 |
chronyc sources |
NTP ソースの状態確認 | どの NTP サーバーと同期しているか、到達状況を確認 |
timedatectl |
タイムゾーン設定・NTP 有効化 | タイムゾーン変更、NTP の有効/無効の切り替えに使う |
date |
現在時刻の表示・設定 | シェルスクリプトでの日時操作に便利 |
タイムゾーンの確認と変更は timedatectl コマンドの使い方 を参照してください。
また、時刻同期の仕組み全体(ntpd との比較を含む)は Linux の時刻同期を設定・確認する方法|chronyc・ntpstat とズレ発生時の対処 で解説しています。
シェルスクリプトでの時刻ズレ監視
定期的に時刻ズレを監視してアラートを出すシンプルなスクリプト例です。#!/bin/bash # 時刻ズレをチェックして 10ms を超えたら警告するスクリプト THRESHOLD_MS=10 # しきい値(ミリ秒) # chronyc tracking からオフセット値を抽出する OFFSET=$(chronyc tracking | grep "System time" | awk '{print $4}') OFFSET_ABS=$(echo "$OFFSET" | sed 's/-//') # ミリ秒に変換(seconds → ms) OFFSET_MS=$(echo "$OFFSET_ABS * 1000" | bc) # しきい値チェック if (( $(echo "$OFFSET_MS > $THRESHOLD_MS" | bc -l) )); then echo "[WARN] 時刻ズレが ${THRESHOLD_MS}ms を超えています: ${OFFSET_MS}ms" logger -p local0.warning "NTP offset exceeded: ${OFFSET_MS}ms" else echo "[OK] 時刻ズレは正常範囲内です: ${OFFSET_MS}ms" fi
crontab の設定方法は crontab コマンドの設定と書き方|動かない時のログ確認まで を参照してください。
本記事のまとめ
| やりたいこと | コマンド・設定 |
|---|---|
| chronyd の起動状態を確認する | systemctl status chronyd |
| 時刻同期の現在状態(オフセット)を確認する | chronyc tracking |
| NTP ソースの接続状態を一覧表示する | chronyc sources |
| NTP ソースの詳細情報を表示する | chronyc sources -v |
| 各 NTP ソースの統計情報を表示する | chronyc sourcestats |
| 時刻を即時強制修正する | sudo chronyc makestep |
| NTP サーバーを変更する | /etc/chrony.conf の pool/server 行を編集後、systemctl restart chronyd |
| chronyd のログを確認する | journalctl -u chronyd |
時刻のズレは「気づきにくい障害」です。
chronyc tracking を日常的に確認する習慣をつけ、ズレが大きくなる前に対処できる体制を整えておきましょう。chronyd のログ管理や journalctl の活用については、journalctl コマンドでsystemd のログを確認する方法 も合わせて参照してください。
Linux Master Pro Seminar(2日間ハンズオン)では chronyd・SELinux・ファイアウォール設定まで、
実際のサーバーを触りながらサーバー管理の基礎を体系的に習得できます。
>> セミナー詳細・お申込みはこちら
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:haproxyコマンドの使い方|Linuxでロードバランサーを構築する方法と設定例
- 前のページへ:bashの配列(Array)の使い方|宣言・追加・ループ・連想配列の実践例
- この記事の属するカテゴリ:Linuxtipsへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます