timedatectl show-timesync コマンドの徹底解説

—

by

in

概要

systemd の timedatectl コマンドは、システムクロックとタイムゾーンの管理だけでなく、NTP(Network Time Protocol)による時刻同期の状態を確認する機能も提供します。その中でも timedatectl show-timesync は、NTP クライアント(systemd-timesyncd など)の詳細情報を JSON 形式で出力する便利なサブコマンドです。

基本的な使い方

コマンドは以下のように実行します。

timedatectl show-timesync

実行すると、現在有効なタイムサーバーや同期状態、最新のオフセット情報などがキーとバリューのペアで表示されます。

主な出力項目

  • ServerName:現在使用中の NTP サーバーのホスト名またはアドレス。
  • ServerAddress:サーバーの IP アドレス。
  • ServerPollIntervalUSec:次回のポーリングまでの間隔(マイクロ秒)。
  • ServerAccuracyUSec:サーバーが報告する最大誤差(マイクロ秒)。
  • ServerLeap:サーバーのうるう秒情報(“yes”, “no”, “unknown”)。
  • NTPSynchronized:yes であれば時刻が NTP と同期中。
  • NTPSyncTimeUSec:最後に同期が成功した時刻(UNIX epoch マイクロ秒)。
  • TimeUSec:現在のシステム時刻(UNIX epoch マイクロ秒)。
  • RTCTimeUSec:ハードウェア時計(RTC)の時刻。

出力例

ServerName=ntp.ubuntu.com
ServerAddress=91.189.94.4
ServerPollIntervalUSec=64000000
ServerAccuracyUSec=1000000
ServerLeap=no
NTPSynchronized=yes
NTPSyncTimeUSec=1722456789123456
TimeUSec=1722456890123456
RTCTimeUSec=1722456889123456

上記は改行で区切られた key=value 形式ですが、--output=json オプションを付与すれば JSON に変換できます。

JSON 形式で取得する方法

timedatectl show-timesync --output=json

出力例:

{
  "ServerName": "ntp.ubuntu.com",
  "ServerAddress": "91.189.94.4",
  "ServerPollIntervalUSec": "64000000",
  "ServerAccuracyUSec": "1000000",
  "ServerLeap": "no",
  "NTPSynchronized": "yes",
  "NTPSyncTimeUSec": "1722456789123456",
  "TimeUSec": "1722456890123456",
  "RTCTimeUSec": "1722456889123456"
}

実務での活用例

  • 監視スクリプトで NTPSynchronized が yes か確認し、同期が外れた場合にアラートを上げる。
  • 定期的に ServerOffsetUSec(存在すれば)を取得し、サーバーとの時刻ズレを数値化してログに残す。
  • 複数のサーバーを使用している環境では、ServerName と ServerAddress を比較し、DNS の切り替えが正しく機能しているか検証する。

よくある質問

1. 出力に期待した項目が無い場合は?

systemd のバージョンや使用している NTP デーモン(systemd-timesyncd, chrony, ntpd など)により取得できるフィールドが異なります。systemctl status systemd-timesyncd でサービスが有効か確認し、必要に応じてパッケージをアップデートしてください。

2. NTP サーバーを手動で変更したい

設定は /etc/systemd/timesyncd.conf の [Time] セクションで FallbackNTP= もしくは NTP= にサーバーリストを記述し、systemctl restart systemd-timesyncd で反映させます。その後 timedatectl show-timesync で新しいサーバーが反映されたか確認できます。