timedatectl – システム時刻・タイムゾーン・NTP同期の確認と設定を行う

コマンドリファレンス

timedatectl は systemd 環境でシステムの日時・タイムゾーン・NTP(ネットワーク時刻同期)をまとめて確認/設定するコマンドです。
date が「表示と書式変換」中心なのに対し、timedatectl は「タイムゾーンの変更」「NTP同期のON/OFF」「ハードウェアクロック(RTC)の扱い」まで一括で管理できます。
実務ではサーバーのタイムゾーン初期設定、NTP同期状況の切り分け、ログの時刻ズレ調査などに使います。

構文(Syntax)

timedatectl [OPTIONS...] COMMAND [ARGS...]

# 例
timedatectl status
timedatectl list-timezones
sudo timedatectl set-timezone ZONE
sudo timedatectl set-time "YYYY-MM-DD HH:MM:SS"
sudo timedatectl set-ntp true|false
timedatectl timesync-status
  • 引数なしで timedatectl を実行すると status と同じ内容を表示します。
  • 設定を変更するサブコマンド(set-time / set-timezone / set-ntp / set-local-rtc など)は原則 root 権限sudo)が必要です。

主なコマンド一覧

コマンド説明使用例
status現在の時刻・タイムゾーン・NTP同期状態を表示(既定の動作)timedatectl status
showstatusと同じ情報をプロパティ形式(機械可読)で表示timedatectl show
set-time TIMEシステム時刻(RTC含む)を設定。root権限が必要sudo timedatectl set-time "2026-07-29 20:15:00"
set-timezone ZONEタイムゾーンを変更(/etc/localtimeを更新)。root権限が必要sudo timedatectl set-timezone Asia/Tokyo
list-timezones設定可能なIANAタイムゾーン名の一覧を表示timedatectl list-timezones
set-local-rtc BOOLRTCをローカル時刻として扱うか設定(Windowsデュアルブート向け)sudo timedatectl set-local-rtc 0
set-ntp BOOLNTPによる自動時刻同期の有効/無効を切り替えsudo timedatectl set-ntp false
timesync-statussystemd-timesyncdの同期状態(サーバー・オフセットなど)を表示timedatectl timesync-status
show-timesynctimesync-statusと同じ情報をプロパティ形式で表示timedatectl show-timesync
ntp-servers IF SERVER…インターフェース固有のNTPサーバーを設定sudo timedatectl ntp-servers eth0 ntp.nict.jp
revert IFインターフェース固有のNTPサーバー設定を解除sudo timedatectl revert eth0

主なオプション一覧

オプション説明
-H, --host=[USER@]HOSTリモートホストに対して実行(SSH経由)
-M, --machine=CONTAINERローカルコンテナに対して実行
--no-ask-password認証プロンプトを表示しない
--no-pager出力をページャーに通さない
-p, --property=NAMEshowと併用し、指定プロパティのみ表示
-a, --all空の値も含め全プロパティを表示
--valueプロパティ表示時に値のみ出力(プロパティ名を省略)
--adjust-system-clockset-local-rtc実行時にRTCからシステムクロックを再同期
--monitortimesync-statusを継続的に監視表示
-h, --help / --versionヘルプ/バージョン表示

status出力の見方

timedatectl status(引数なし実行も同じ)で表示される各項目の意味は次のとおりです。

項目意味
Local time設定中のタイムゾーンでの現在時刻
Universal timeUTC(協定世界時)での現在時刻
RTC timeハードウェアクロック(RTC。BIOS/UEFIが保持する時計)の時刻
Time zone現在のタイムゾーン(IANA名、略称、UTCオフセット)
System clock synchronizedNTP等でシステムクロックが同期済みか(yes/no
NTP servicesystemd-timesyncd等のNTPサービスの稼働状態(active/inactive
RTC in local TZRTCをローカル時刻として扱っているか。基本はno(UTC管理)が推奨

実行例

現在の時刻・タイムゾーン・NTP同期状態を確認する

説明: 引数なしのtimedatectl(またはtimedatectl status)で全体を一目で確認できます。
コマンド:

timedatectl status

出力例(実機で実行した結果):

               Local time: Wed 2026-07-29 23:02:44 UTC
           Universal time: Wed 2026-07-29 23:02:44 UTC
                 RTC time: Wed 2026-07-29 23:02:44
                Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

一覧からタイムゾーンを探して変更する

説明: list-timezonesでIANA名を確認してからset-timezoneで変更します。
コマンド:

timedatectl list-timezones | grep Tokyo
sudo timedatectl set-timezone Asia/Tokyo

1行目の出力例(実機で実行した結果、497件中の該当行):

Asia/Tokyo

タイムゾーンをAsia/Tokyoに変更すると、statusの表示は次のようになります(UTC 23:02:44 → JSTは+9時間の08:02:44、日付が翌日に繰り上がる点に注意)。

               Local time: Thu 2026-07-30 08:02:44 JST
           Universal time: Wed 2026-07-29 23:02:44 UTC
                 RTC time: Wed 2026-07-29 23:02:44
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

NTP同期の詳細(サーバー・オフセット)を確認する

説明: statusNTP service: activeだけでは同期先や誤差までは分かりません。timesync-statusで詳細を確認します。
コマンド:

timedatectl timesync-status

出力例(実機で実行した結果):

       Server: 185.125.190.57 (ntp.ubuntu.com)
Poll interval: 34min 8s (min: 32s; max 34min 8s)
         Leap: normal
      Version: 4
      Stratum: 2
    Reference: 63DC0885
    Precision: 1us (-25)
Root distance: 3.189ms (max: 5s)
       Offset: +746us
        Delay: 222.179ms
       Jitter: 5.307ms
 Packet count: 75
    Frequency: +5.519ppm

Offset(システム時刻とNTPサーバーの誤差)が大きい、またはServerが空のままなら、ファイアウォールでUDP 123がブロックされていないか、set-ntp trueになっているかを確認してください。

NTP同期を止めて手動で時刻を設定する

説明: NTPが有効なままset-timeしても、同期によりすぐ元に戻ります。手動設定する場合は先にNTPを止めます。
コマンド:

sudo timedatectl set-ntp false
sudo timedatectl set-time "2026-07-29 20:15:00"
# 確認後、NTPを再度有効化して同期に戻す
sudo timedatectl set-ntp true

エラー例:一般ユーザーで実行した場合

説明: set-timezoneset-ntpsudoなしで実行すると認証エラーになります。
コマンド:

timedatectl set-timezone Asia/Tokyo

出力例(実機で実行した結果):

Failed to set time zone: Interactive authentication required.

対処: sudoを付けて実行するか、実行ユーザーがPolkit経由で権限を持っているか確認してください。

よくある質問(FAQ)

timedatectlとdateコマンドの違いは?

dateは日時の表示・書式変換に特化したコマンドで、タイムゾーンやNTP同期の管理機能はありません。timedatectlはsystemd環境向けの上位コマンドで、タイムゾーンの一覧・変更、NTP同期のON/OFF、RTCの扱いまでまとめて管理できます。時刻を素早く整形して出すだけならdate、システム全体の時刻設定を変えるならtimedatectlを使います。

「Interactive authentication required」で失敗する

設定を変更するサブコマンド(set-time / set-timezone / set-ntp / set-local-rtcなど)はPolkit経由の権限確認が必要です。sudoを付けて実行するか、実行ユーザーに管理者権限を付与してください。

DockerコンテナやWindows(WSL)でtimedatectlが使えない

多くのDockerコンテナやWSL1、systemdを使わない構成のWSL2では、systemdおよびsystemd-timesyncdが動作していないためtimedatectlのほとんどのサブコマンドが失敗します。この場合、タイムゾーンはTZ環境変数や/etc/timezoneで扱うのが一般的です。

NTPが同期しない場合は?

timedatectl timesync-statusで同期先サーバーとOffset(誤差)を確認します。Serverが空のまま、またはSystem clock synchronized: noが続く場合は、UDP 123のアウトバウンド通信がファイアウォールでブロックされていないか、set-ntp trueになっているかを確認してください。

RTC in local TZはyesにすべき?

基本はno(RTCをUTCで管理)が推奨です。Windowsとのデュアルブート環境で、Windows起動時に時刻がずれて表示される場合のみsudo timedatectl set-local-rtc 1 --adjust-system-clockを検討してください。

関連コマンド

  • date : 日時の表示・書式変換・(sudoでの)簡易的な時刻設定。
  • hwclock : ハードウェアクロック(RTC)を直接読み書きする低レベルコマンド。
  • tzselect : 対話形式でタイムゾーンを選び、設定用の値を得る。
  • chronyc : chronyでNTP同期を管理している環境での状態確認・制御。
  • systemctl : timedatectl自体が依存するsystemdサービス(systemd-timesyncdなど)の起動・停止管理。

備考

  • 対応環境: systemdを採用するディストリビューション(Ubuntu 15.04以降、CentOS/RHEL 7以降、Debian 8以降など)で利用可能。SysVinit系や、OpenRCを使うAlpine Linuxなどでは使えません。
  • chrony併用環境の注意: chronyを導入してNTP同期している場合、systemd-timesyncdは無効化されていることが多く、timedatectlNTP service表示が実態と食い違うことがあります。その場合はchronyc trackingで確認してください。
  • コンテナ/WSLでの制約: systemdが動いていない環境では変更系サブコマンドが軒並み失敗します(本記事でも権限昇格ができない環境でFailed to set time zone: Interactive authentication required.を確認済み)。
  • set-timeとNTPの競合: NTPが有効(set-ntp true)な状態でset-timeしても、同期によりすぐ元の時刻に戻ります。手動設定したい場合は先にset-ntp falseにしてください。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント