「ntpdateを定期実行してもなぜか時刻が戻る」
サーバーの時刻ずれは、認証失敗・メール配信エラー・バッチ処理の誤動作など、
様々なトラブルの原因になります。
この記事では、
ntpdate コマンドでLinuxサーバーの時刻をNTPサーバーと同期する方法を解説します。基本的な使い方から主要オプション、crontabとの組み合わせ、
タイムゾーンの確認・設定、現代のLinuxで推奨されるchronyへの移行方法まで、実務で必要な情報を網羅しました。
この記事のポイント
・ntpdateはNTPサーバーに接続してサーバー時刻を即時修正するコマンド(root権限必須)
・-bで強制修正、-sでsyslog記録。crontabに登録して定期実行するのが実務の基本形
・CentOS8/RHEL8以降はntpdate廃止。chronyc makestepが即時同期の代替コマンド
・timedatectl set-ntp trueでNTP自動同期を有効化。dateコマンドで書式指定出力も可能
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
ntpdateコマンドとは?時刻同期の仕組み
ntpdate は、インターネット上のNTPサーバー(Network Time Protocol サーバー)に接続し、自サーバーの時刻を即座に修正するコマンドです。
サーバーの時刻がずれると、以下のような問題が発生します。
・認証の失敗:KerberosやSSL証明書の検証は時刻のずれが一定以上あると認証エラーになる
・ログの不整合:時刻がずれると障害調査時にログの前後関係が把握できなくなる
・バッチ処理の誤動作:cronで起動するバッチ処理が正しい時刻で動かなくなる
・メール配信の問題:送受信時刻がずれてメールが迷惑メール判定される場合がある
UTCとJSTのずれに注意
LinuxのVPSやクラウドサーバーは、初期状態でUTC(協定世界時)に設定されていることがほとんどです。
UTCは日本時間(JST)より9時間遅れているため、タイムゾーンを正しく設定していないと
ログが9時間ずれて記録され、障害調査で痛い目を見ます。
| タイムゾーン | 現在時刻の例 | 説明 |
|---|---|---|
| UTC | 15:00 | 協定世界時(グリニッジ標準時) |
| JST(Asia/Tokyo) | 24:00(翌0:00) | 日本標準時。UTCより+9時間 |
ntpdate を定期的に実行することで、常に正確な時刻を維持できます。実行にはroot権限(またはsudo)が必要です。
ntpdateの基本的な使い方
1. NTPサーバーを指定して時刻を同期する
# 書式 # ntpdate NTPサーバー名(またはIPアドレス) # 例:日本のNTPサーバーで時刻を合わせる # ntpdate ntp.nict.go.jp 15 Mar 10:00:00 ntpdate[1234]: step time server 133.243.238.163 offset 0.123456 sec
「offset」の値がずれていた時間(秒)です。
2. 主なNTPサーバー一覧
日本国内で信頼性の高いNTPサーバーを使いましょう。・ntp.nict.go.jp:情報通信研究機構(NICT)のNTPサーバー。日本国内で最も安定
・ntp.jst.mfeed.ad.jp:日本のISPが提供する公開NTPサーバー
・0.jp.pool.ntp.org:NTPプールプロジェクトの日本向けサーバー群
主要オプションの使い方
1. -b オプション:時刻を強制的に修正する
デフォルトでは時刻のずれが大きい場合、段階的に調整されます。-b オプションを付けると即座に強制修正します。# 時刻を強制的に修正する # ntpdate -b ntp.nict.go.jp
2. -s オプション:ログをsyslogに出力する
-s オプションを付けると、ntpdateの実行結果が標準出力ではなくsyslogに記録されます。crontabで自動実行する場合は、このオプションをつけておくと管理しやすくなります。
# ログをsyslogに出力する # ntpdate -s ntp.nict.go.jp # syslogで確認する # grep ntpdate /var/log/messages Mar 15 10:00:00 server01 ntpdate[1234]: step time server 133.243.238.163 offset 0.012345 sec
3. -d オプション:デバッグモードで実行する
-d オプションは、NTPサーバーとの通信内容を詳細に表示します。実際の時刻修正は行わないため、動作確認に使えます。
# デバッグモードで確認する(時刻修正は行わない) # ntpdate -d ntp.nict.go.jp
crontabと組み合わせて定期的に時刻同期する
本番サーバーでは、ntpdateをcrontabに登録して定期実行するのが一般的な使い方です。# /etc/crontab に以下を追記する(例:毎日午前3時に実行) 0 3 * * * root /usr/sbin/ntpdate -s ntp.nict.go.jp # または crontab -e で記述する場合 0 3 * * * /usr/sbin/ntpdate -s ntp.nict.go.jp
-s オプションをつけることで、実行結果が /var/log/messages に記録されます。定期実行時はフルパス(
/usr/sbin/ntpdate)で指定するのが安全です。ntpdate定期実行時のよくある落とし穴
crontabで実行してもなかなか時刻が戻らない場合、実はntpd(またはchronyd)が同時に動いていて
ntpdateの修正を打ち消しているケースがあります。
ntpdを運用中であれば、ntpdateではなくntpd/chronyの設定を見直すほうが根本的な解決になります。
タイムゾーンの確認と設定(dateコマンドを活用する)
ntpdateで時刻を合わせるだけでなく、タイムゾーンが正しく設定されているかの確認も忘れずに行いましょう。時刻の数値は合っていてもタイムゾーンがUTCのままだと、ログが9時間ずれて記録されます。
1. 現在の時刻とタイムゾーンを確認する
# timedatectlで現在の設定を確認する $ timedatectl Local time: Thu 2026-05-29 15:30:00 JST Universal time: Thu 2026-05-29 06:30:00 UTC RTC time: Thu 2026-05-29 06:30:00 Time zone: Asia/Tokyo (JST, +0900) System clock synchronized: yes NTP service: active RTC in local TZ: no
「Time zone: UTC」のままであれば、以下のコマンドでタイムゾーンを変更してください。
# タイムゾーンをAsia/Tokyoに変更する(sudo必須) # timedatectl set-timezone Asia/Tokyo
2. dateコマンドで時刻を確認する
date コマンドは時刻の確認だけでなく、書式を指定した出力やスクリプトでのファイル名生成にも使えます。# 現在時刻を確認する $ date Thu May 29 15:30:00 JST 2026 # 「年-月-日 時:分:秒」の形式で出力する $ date "+%Y-%m-%d %H:%M:%S" 2026-05-29 15:30:00 # バックアップファイル名に使いやすい日付形式 $ date "+%Y%m%d" 20260529 # 7日後の日付を確認する(cronジョブの検証などに便利) $ date -d "+7 days" "+%Y-%m-%d" 2026-06-05
CentOS8以降はchronyを使う(ntpdateは廃止)
CentOS8 / RHEL8 以降ではntpdate パッケージが廃止されました。現代のLinuxでは
chrony または systemd-timesyncd を使うのが標準です。1. chronyctlで即時同期する(ntpdateの代替)
# chronyが動いているか確認する # systemctl status chronyd # 即時に時刻同期する(ntpdate相当) # chronyc makestep # 同期状態を確認する # chronyc tracking Reference ID : 85F3EEA3 (ntp.nict.go.jp) Stratum : 2 Ref time (UTC) : Thu May 29 06:30:00 2026 System time : 0.000123456 seconds fast of NTP time Last offset : +0.000234567 seconds RMS offset : 0.000345678 seconds Frequency : 1.234 ppm slow
2. timedatectlでNTP同期を有効にする
# NTP同期の状態を確認する # timedatectl status Local time: Thu 2026-05-29 15:30:00 JST Universal time: Thu 2026-05-29 06:30:00 UTC RTC time: Thu 2026-05-29 06:30:00 Time zone: Asia/Tokyo (JST, +0900) System clock synchronized: yes NTP service: active RTC in local TZ: no # NTP同期を有効にする # timedatectl set-ntp true
NTP service: active と表示されていれば自動同期が働いているので、ntpdateの定期実行は不要です。トラブルシュート
「No servers can be used, exiting」と表示される
指定したNTPサーバーに接続できない場合に出るエラーです。以下の点を確認してください。
・ファイアウォール:UDPの123番ポートがアウトバウンドで許可されているか
・NTPサーバー名:タイプミスがないか、
nslookup で名前解決できるか・ネットワーク疎通:
ping でNTPサーバーに到達できるか確認する# NTPサーバーの名前解決を確認する $ nslookup ntp.nict.go.jp # UDPポート123の疎通確認(ntpqが使える場合) # ntpq -p ntp.nict.go.jp
「Failed to set time zone: Failed to update /etc/localtime」が出た場合
sudo なしで timedatectl set-timezone を実行した場合に表示されるエラーです。コマンドの先頭に
sudo を付けて再実行してください。# sudoを付けて実行する $ sudo timedatectl set-timezone Asia/Tokyo
ntpdateを実行しても時刻が戻ってしまう
ntpd(またはchronyd)が同時に動いていると、ntpdateで修正した時刻をntpdが元に戻すことがあります。# ntpdの動作状態を確認する # systemctl status ntpd # chronydの動作状態を確認する # systemctl status chronyd
見直してNTPサーバーとの同期設定を修正するのが正しい対処です。
本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| NTPサーバーで時刻を同期する | ntpdate ntp.nict.go.jp |
| 時刻を強制的に修正する | ntpdate -b ntp.nict.go.jp |
| 実行結果をsyslogに記録する | ntpdate -s ntp.nict.go.jp |
| デバッグモードで確認する(修正なし) | ntpdate -d ntp.nict.go.jp |
| crontabで定期実行する | 0 3 * * * root /usr/sbin/ntpdate -s ntp.nict.go.jp |
| タイムゾーンと時刻を確認する | timedatectl |
| タイムゾーンを日本時間に変更する | sudo timedatectl set-timezone Asia/Tokyo |
| 現在時刻を書式指定で表示する | date "+%Y-%m-%d %H:%M:%S" |
| chronyで即時同期する(現代のLinux) | chronyc makestep |
| NTP同期を有効にする | timedatectl set-ntp true |
サーバーの時刻管理を含めた、Linuxインフラの基礎を体系的に学びたいですか?
時刻ずれは小さいことのようで、障害に発展するケースは現場で何度も見てきました。基礎を正しく学んでおくことが大事です。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:topコマンドでCPU・メモリ使用状況を確認する方法|プロセス絞り込みとload averageの読み方
- 前のページへ:.bash_profile
- この記事の属するカテゴリ:【Linux入門】初心者のための基礎知識・講座へ戻る

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