timedatectl:Linux サーバーの時刻同期状態の確認とタイムゾーン設定

テスト環境RHEL系AlmaLinux 9.8systemd 252 · chrony 4.8rootアカウントDebian 12 一般ユーザー2026-10-29 確認
システム情報・設定コマンドtimedatectl場所/usr/bin/timedatectl

timedatectl は、Linux サーバーのシステムクロックとタイムゾーン、NTP による時刻同期の状態を確認・変更する systemd のコマンドです。chrony を使う AlmaLinux 9 サーバーと ntpsec を使う Debian 12 サーバーで時刻同期の状態を確認したところ、どちらのサーバーも時計は合っていましたが、NTP service の行は active と n/a で異なりました。

以下の出力は 2 台のサーバーで実行した結果です。ホスト名と IP アドレス、パッケージのバージョン番号だけを例の値に置き換え、時刻やタイムゾーンを変えるコマンドは運用中のサーバーでは実行していません。

1️⃣ timedatectl の使い方と Linux サーバーの時刻確認

オプションなしで timedatectl を実行すると、status を付けたときと同じ結果になります。システムクロックとハードウェアクロック(RTC)の時刻、タイムゾーン、同期状態が 1 画面にまとまっています。以下は Debian 12 サーバーで実行した結果です。

timedatectl
               Local time: Wed 2026-10-28 19:49:57 UTC
           Universal time: Wed 2026-10-28 19:49:57 UTC
                 RTC time: Wed 2026-10-28 19:49:57
                Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
              NTP service: n/a
          RTC in local TZ: no

Debian 12 サーバーはタイムゾーンが Etc/UTC のため、Local time と Universal time が同じ時刻で表示されました。各行で確認する内容と 2 台のサーバーの結果は下の表のとおりです。

出力の行確認できるもの2 台のサーバーの結果と確認ポイント
Local timeタイムゾーンを適用したシステムクロックの現在時刻タイムゾーンを変えると、この行と date の結果だけが新しいタイムゾーンになる
Universal time同じ時刻を UTC で表した値タイムゾーンを変えてもそのまま — Etc/UTC の Debian 12 サーバーでは Local time と同じ時刻
RTC timeハードウェアクロック(RTC)の時刻タイムゾーン表示なしで出る — RTC in local TZ が no なら UTC の時刻
Time zone設定されたタイムゾーンと略称、UTC との差変更するときは list-timezones の一覧にある名前で
System clock synchronizedカーネルが時計を同期済みと見なしているか2 台とも yes — no なら chronyc tracking や ntpq -p で基準サーバーから確認
NTP servicetimedatectl がオン・オフする同期サービスが動いているかAlmaLinux 9(chrony)は active、Debian 12(ntpsec)は n/a — n/a は timedatectl が知らないサービスなので systemctl で確認
RTC in local TZハードウェアクロックをローカル時刻で保つか(no = UTC)2 台とも no — yes を UTC に戻すコマンドは set-local-rtc 0

Linux には時計が 2 つあります。システムクロックは起動後にカーネルが保つ時計で、ハードウェアクロックはサーバーの電源が切れていても時刻を保つマザーボードの時計です。

ハードウェアクロックは hwclock で直接読みます。hwclock は時刻を現在のタイムゾーンに変換して出力します。AlmaLinux サーバーでコマンドの前に TZ=UTC を付けて読んだ結果は、末尾に +00:00 が付いた UTC の時刻でした。

TZ=UTC hwclock --show
2026-10-28 19:53:33.006788+00:00

一般ユーザーで接続した Debian 12 サーバーでは、同じコマンドがハードウェアクロックにアクセスできずに終わりました。

/usr/sbin/hwclock --show
hwclock: Cannot access the Hardware Clock via any known method.
hwclock: Use the --verbose option to see the details of our search for an access method.

RTC in local TZ の行は /etc/adjtime ファイルの 3 行目と同じ設定です。AlmaLinux サーバーの 3 行目は UTC で、ハードウェアクロックを UTC で保つという意味です。

cat /etc/adjtime
0.0 0 0.0
0
UTC

スクリプトで値を読むときは status の代わりに show を使います。Debian 12 サーバーで実行すると、同じ情報が「名前=値」の形で 1 行に 1 つずつ出力されます。

timedatectl show
Timezone=Etc/UTC
LocalRTC=no
CanNTP=no
NTP=no
NTPSynchronized=yes
TimeUSec=Wed 2026-10-28 19:49:57 UTC
RTCTimeUSec=Wed 2026-10-28 19:49:57 UTC

-p で項目を選び --value を付けると、名前なしで値だけが残ります。タイムゾーン名だけを取り出すときにこの形を使います。

timedatectl show -p Timezone --value
Etc/UTC

🔲 timedatectl コマンドシミュレーター

下のシミュレーターでは、時刻の確認とタイムゾーン一覧、タイムゾーンの変更、chronyc による同期確認のコマンドを実際に入力してみることができます。

timedatectl コマンドシミュレーターsystemd 252 · chrony 4.8
[root@server work]#
ブラウザーの中だけで動作します。変更したタイムゾーンは再読み込みすると最初(Etc/UTC)に戻り、↑↓ で前に入力したコマンドを呼び出せます。

2️⃣ Linux サーバーの時刻同期の状態

System clock synchronized の行ではカーネルが時計を同期済みと見なしているかを、NTP service の行では timedatectl がオン・オフできる同期サービスが動いているかを確認します。show では同じ値が NTPSynchronized と NTP として出力され、CanNTP はオン・オフできる同期サービスがあるかどうかを表します。

chrony を使う AlmaLinux 9 サーバーでは、3 つの値がすべて yes でした。

timedatectl show -p CanNTP -p NTP -p NTPSynchronized
CanNTP=yes
NTP=yes
NTPSynchronized=yes

ntpsec で時刻を合わせる Debian 12 サーバーでは NTPSynchronized だけが yes で、CanNTP と NTP は no でした。そのため、このサーバーの status 画面では NTP service の行が n/a と表示されました。

timedatectl show -p CanNTP -p NTP -p NTPSynchronized
CanNTP=no
NTP=no
NTPSynchronized=yes

ntpsec サービス自体は動いていました。

systemctl is-active ntpsec
active

timedatectl が知っている同期サービスは ntp-units.d フォルダーの一覧ファイルに書かれたものだけで、ディストリビューションのパッケージはこのファイルを /usr/lib/systemd/ntp-units.d/ に置きます(公式マニュアルによる)。AlmaLinux 9 サーバーには chrony パッケージが入れた一覧ファイルがあり、その中に chronyd.service の 1 行が入っていました。

cat /usr/lib/systemd/ntp-units.d/50-chronyd.list
chronyd.service
rpm -qf /usr/lib/systemd/ntp-units.d/50-chronyd.list
chrony-4.8-10.el9.x86_64

Debian 12 サーバーにはこのフォルダーがありませんでした。ntpsec は一覧にないサービスのため、timedatectl は時計が合っていることはわかっても、そのサービスをオン・オフすることはできませんでした。

ls /usr/lib/systemd/ntp-units.d/
ls: cannot access '/usr/lib/systemd/ntp-units.d/': No such file or directory
🖥️ timedatectlstatus, show, set-ntp
ntp-units.d/*.listtimedatectl がオン・オフする同期サービスの一覧
chronyd.service一覧にある → NTP service: active
ntpsec.service一覧にない → NTP service: n/a

3️⃣ chronyc で時刻同期を確認

chrony を使うサーバーで、どのタイムサーバーに時計を合わせているかは chronyc で確認します。sources は chronyd が問い合わせているタイムサーバーとその状態を 1 行ずつ出力します。

chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^- 192.0.2.10                    2  10   377   943   +272us[ +275us] +/-   55ms
^- ntp1.example.com              2  10   377    80    -28us[  -32us] +/- 3655us
^- 198.51.100.33                 3  10   257   384   -151us[ -156us] +/-   97ms
^- 198.51.100.82                 3  10   177   532   +157us[ +149us] +/-   45ms
^* 192.0.2.123                   3   4   377     2    -21us[  -23us] +/-  312us

先頭の ^ はタイムサーバー、2 文字目の * は今時計を合わせている基準サーバー、- は計算に加えていない候補サーバーです。基準サーバーの Poll 4 は 2 の 4 乗の 16 秒ごとに問い合わせるという意味で、Reach 377 は直近 8 回の応答をすべて受け取ったという値です。

tracking は、システムクロックが基準サーバーの時刻とどれだけずれているかを出力します。

chronyc tracking
Reference ID    : C000027B (192.0.2.123)
Stratum         : 4
Ref time (UTC)  : Wed Oct 28 19:50:21 2026
System time     : 0.000002422 seconds slow of NTP time
Last offset     : -0.000002098 seconds
RMS offset      : 0.000000981 seconds
Frequency       : 6.348 ppm slow
Residual freq   : -0.001 ppm
Skew            : 0.017 ppm
Root delay      : 0.000300815 seconds
Root dispersion : 0.000150780 seconds
Update interval : 16.3 seconds
Leap status     : Normal

System time の行を見ると、システムクロックは NTP の時刻より 0.000002422 秒遅れており、Leap status は Normal でした。Update interval の 16.3 秒は、直近 2 回の時計更新の間隔です。

どのサーバーに問い合わせるかは /etc/chrony.conf の pool 行と server 行で決まります。コメントと空行を除いて設定行だけを残すと、次のようになります。

grep -v "^#" /etc/chrony.conf | grep -v "^$"
pool 2.almalinux.pool.ntp.org iburst
sourcedir /run/chrony-dhcp
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
keyfile /etc/chrony.keys
ntsdumpdir /var/lib/chrony
leapsectz right/UTC
logdir /var/log/chrony
server 192.0.2.123 prefer iburst minpoll 4 maxpoll 4

pool 行は AlmaLinux の NTP プールに問い合わせる行で、最後の server 行の prefer は他のサーバーよりこのサーバーを先に選ばせるオプションです。makestep 1.0 3 は、chronyd の起動後最初の 3 回は 1 秒を超えてずれた時計を一度に合わせ、その後は時計を少しずつ速く、または遅く進めて合わせる設定です。rtcsync はカーネルに 11 分ごとにシステム時刻をハードウェアクロックへ書き写させます(公式ドキュメントによる)。

ntpsec を使う Debian 12 サーバーでは、ntpq -p で同じ内容を確認しました。先頭の * が基準サーバーで、3 台とも 1024 秒ごとに問い合わせていました。

ntpq -p
     remote           refid      st t when poll reach   delay   offset   jitter
===============================================================================
+203.0.113.43    198.51.100.28    2 u  835 1024  377 184.6893  -0.1018   1.4879
+203.0.113.44    198.51.100.27    2 u  547 1024  377 183.0827  -2.4227   4.0957
*ntp2.example.co 198.51.100.40    2 u  440 1024  377 177.4670  -0.5814   1.7070

4️⃣ timedatectl でタイムゾーンを変更

タイムゾーン名は list-timezones で確認します。ほとんどが「大陸/都市」形式の名前で 1 行に 1 つずつ出力され、2 台とも 598 個でした。

timedatectl list-timezones | head -5
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
timedatectl list-timezones | wc -l
598

一覧が長いので、名前を探すときは grep で絞り込みます。

timedatectl list-timezones | grep -i new_york
America/New_York

タイムゾーンは set-timezone の後に一覧の名前を書いて変更します。このコマンドは /etc/localtime のリンクを新しいタイムゾーンファイルに置き換えるため、一般ユーザーでは sudo を付けて実行します。

sudo timedatectl set-timezone America/New_York

/etc/localtime がタイムゾーンファイルへのリンクかどうかは ls -l で確認します。

ls -l /etc/localtime
lrwxrwxrwx 1 root root 27 Sep 24 12:52 /etc/localtime -> /usr/share/zoneinfo/Etc/UTC

一覧にない名前を入れると、タイムゾーンを変える前にすぐ拒否されました。

timedatectl set-timezone Mars/Olympus
Failed to set time zone: Invalid or not installed time zone 'Mars/Olympus'

タイムゾーンを変えてもシステムクロックの時刻はそのままで、Local time と date コマンドの結果だけが新しいタイムゾーンで表示されます。ハードウェアクロックを UTC にしているサーバーなら、ハードウェアクロックも変わりません(公式マニュアルによる)。

5️⃣ timedatectl で NTP を有効にする・時刻を直接設定する

set-ntp true は同期サービス一覧の最初のサービスを起動し、起動時にも開始されるようにします。false は一覧のサービスを停止し、起動時に開始されないようにします(公式マニュアルによる)。

sudo timedatectl set-ntp true

一覧ファイルのない Debian 12 サーバーでは、今と同じ値の false を入れても NTP not supported で終わりました。ntpsec のように一覧にないサービスは、systemctl で直接起動・停止します。

timedatectl set-ntp false
Failed to set ntp: NTP not supported

時刻を直接設定するときは set-time の後に日付と時刻を書きます。このコマンドはシステムクロックと一緒にハードウェアクロックも合わせます。

sudo timedatectl set-time '2026-10-28 20:00:00'

Debian 12 サーバーで形式の違う値を入れると、時刻を変えずにエラーで終わりました。

timedatectl set-time bad
Failed to parse time specification 'bad': Invalid argument

chrony を使うサーバーで大きくずれた時計を一度に合わせるときは、chronyc makestep を使います。

sudo chronyc makestep

makestep は少しずつ合わせていた残りの差を捨て、システムクロックをその差の分だけすぐに飛ばします。公式ドキュメントは時刻が急に変わると一部のソフトウェアが影響を受けることがあると警告しているため、ゆっくり合わせるのが難しいほど時計がずれたときだけ使います。

🔢 FAQ & おすすめコンテンツ

chrony や ntpsec のような NTP サービスが時計を合わせ続けるため、cron で rdate を回すことはほとんどありません。確認した AlmaLinux 9 サーバーには rdate が入っておらず、インストールできるパッケージの一覧にもありませんでした。Debian 12 サーバーのリポジトリには rdate 1.11 パッケージがありましたが、インストールはされていませんでした。

timesync-status は systemd-timesyncd 専用のコマンドです。chrony を使う AlmaLinux 9 サーバーと ntpsec を使う Debian 12 サーバーでは、どちらも Failed to query server エラーで終わりました。こうしたサーバーでは chronyc tracking や ntpq -p で同期状態を確認します。

公式マニュアルは、ハードウェアクロックをローカル時刻にしておくと、タイムゾーンを変えたときや夏時間が切り替わるときに問題が起こりうると説明しています。そのため、できれば UTC にしておくことを勧めており、UTC に変えるコマンドは sudo timedatectl set-local-rtc 0 です。確認した 2 台はどちらも no(UTC)でした。

ℹ️ 提携について
当サイトのコンテンツにはアフィリエイトリンクが含まれています。訪問者がこのリンクを通じて商品やサービスを購入すると、当サイトは販売元から手数料を受け取ります。この過程において、購入者が支払う金額(イベント割引適用で金額が下がります↓)は上昇しません。掲載されている価格・割引・在庫情報は作成時点のものであり、実際とは異なる場合がありますので、ご購入前に販売元にて最終確認をお願いいたします。商品の選定および評価は独自の基準に基づいて行われており、手数料の支払いの有無は紹介順や評価内容に影響を与えません。

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

人間であることを証明してください: 0   +   6   =