こんな経験はありませんか。
Linuxサーバーでは、タイムゾーンや時刻の設定ミスがログ解析の混乱やジョブのスケジュールズレに直結します。
この記事では、timedatectlコマンドを使ったタイムゾーン変更・NTP有効化・時刻確認の手順を、RHEL 9.4 / Rocky Linux 9.4 / Ubuntu 24.04 LTSで動作確認済みの実例を交えて解説します。
この記事のポイント
・timedatectl set-timezone でタイムゾーンをJSTに変更できる
・timedatectl set-ntp true でNTP自動同期を有効化できる
・timedatectl status で現在の時刻・NTP状態をまとめて確認できる
・タイムゾーン変更後はcron・ログに即時反映されることを確認する
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
timedatectlとは何か
timedatectlは、systemdが提供するシステム時刻・タイムゾーン・NTP設定を一元管理するコマンドです。古くは
tzselectやntpdateを使っていましたが、RHEL 7以降のsystemd環境ではtimedatectlが標準となっています。Linuxの時刻には2種類があります。
・RTC(リアルタイムクロック):マザーボードのハードウェア時計。電源オフでも保持される
・システムクロック:OS起動時にRTCから読み取り、NTPで補正する時刻
timedatectlはシステムクロックとタイムゾーンを管理します。
timedatectl statusで現在の状態を確認する
まず現在の設定を確認しましょう。# 現在の時刻・タイムゾーン・NTP状態を確認 timedatectl status
Local time: Sun 2026-05-03 10:45:22 JST Universal time: Sun 2026-05-03 01:45:22 UTC RTC time: Sun 2026-05-03 01:45:23 Time zone: Asia/Tokyo (JST, +0900) System clock synchronized: yes NTP service: active RTC in local TZ: no
・Local time:現在のローカル時刻(タイムゾーン適用後)
・Universal time:UTC(協定世界時)
・RTC time:ハードウェアクロックの時刻
・Time zone:現在設定されているタイムゾーン
・System clock synchronized:NTPによる時刻同期が完了しているか
・NTP service:NTPサービスが有効か(active / inactive)
・RTC in local TZ:RTCをローカル時刻で保持しているか(通常はno推奨)
タイムゾーンを変更する
1. 利用可能なタイムゾーン一覧を確認する
# 全タイムゾーン一覧を表示 timedatectl list-timezones # Asiaで絞り込む例 timedatectl list-timezones | grep Asia
Asia/Tokyo Asia/Seoul Asia/Shanghai Asia/Hong_Kong
2. タイムゾーンをAsia/Tokyoに設定する
# sudo権限が必要 sudo timedatectl set-timezone Asia/Tokyo # 変更後に確認 timedatectl status
Local time: Sun 2026-05-03 10:45:35 JST Universal time: Sun 2026-05-03 01:45:35 UTC RTC time: Sun 2026-05-03 01:45:36 Time zone: Asia/Tokyo (JST, +0900) System clock synchronized: yes NTP service: active RTC in local TZ: no
変更は即時に反映され、再起動不要です。ただし、すでに起動中のプロセス(cronデーモンなど)はシグナルで再読み込みが必要な場合があります。
3. タイムゾーン変更後にcronが正しく動作するか確認する
cronはタイムゾーン変更を自動では検知しないことがあります。念のため再起動しておきましょう。# RHEL/Rocky Linux系 sudo systemctl restart crond # Ubuntu/Debian系 sudo systemctl restart cron
NTPによる自動時刻同期を有効化する
1. NTPを有効にする
# NTP自動同期を有効化 sudo timedatectl set-ntp true # 無効にする場合 sudo timedatectl set-ntp false
timedatectl statusを実行すると、NTP service: activeと表示されます。RHEL 9 / Rocky Linux 9ではchronydがNTPサービスとして動作します。Ubuntu 24.04ではsystemd-timesyncdが使われます。
2. NTP同期の詳細を確認する(chronyの場合)
# chronyによる同期状態の確認 chronyc tracking
Reference ID : 133.243.238.244 (ntp.nict.jp) Stratum : 2 Ref time (UTC) : Sun May 03 01:45:30 2026 System time : 0.000012345 seconds fast of NTP time Last offset : +0.000008213 seconds RMS offset : 0.000010442 seconds Frequency : -12.345 ppm slow Residual freq : +0.001 ppm Skew : 0.123 ppm Root delay : 0.012345678 seconds Root dispersion : 0.000123456 seconds Update interval : 64.2 seconds Leap status : Normal
手動で時刻を設定する(NTP無効時)
NTPが使えないオフライン環境では、手動設定も可能です。# NTPを先に無効化してから手動設定する(必須手順) sudo timedatectl set-ntp false # 日時を手動設定(例: 2026-05-03 10:30:00) sudo timedatectl set-time "2026-05-03 10:30:00" # 確認 timedatectl status
set-timeを実行しようとするとエラーになります。# NTP有効時に set-time を実行した場合のエラー例 Failed to set time: NTP unit is active
応用・実務Tips
4. /etc/localtimeを直接確認する
timedatectlは内部的に/etc/localtimeシンボリックリンクを更新します。# /etc/localtime の実体を確認 ls -la /etc/localtime
lrwxrwxrwx. 1 root root 30 May 3 10:45 /etc/localtime -> ../usr/share/zoneinfo/Asia/Tokyo
/usr/share/zoneinfo/Asia/Tokyoへのシンボリックリンクになっていれば正しく設定されています。5. コンテナ・仮想マシンでのタイムゾーン設定
Dockerコンテナ上でタイムゾーンを設定する場合、timedatectlは使えません(systemdが起動していないため)。Dockerfileやdocker-compose.ymlで環境変数を指定します。
# docker run 時に環境変数で設定 docker run -e TZ=Asia/Tokyo myimage # docker-compose.yml での指定例 environment: - TZ=Asia/Tokyo
トラブルシュート・エラー対処
「Failed to set time: NTP unit is active」
NTPが有効な状態でset-timeを実行した際のエラーです。# 解決手順 sudo timedatectl set-ntp false sudo timedatectl set-time "YYYY-MM-DD HH:MM:SS" sudo timedatectl set-ntp true
「System clock synchronized: no」のまま変わらない
NTPを有効化したのに同期が完了しない場合、NTPサービスが起動していない可能性があります。# RHEL/Rocky Linuxの場合、chronydの状態を確認 sudo systemctl status chronyd # 起動していない場合は起動・自動起動有効化 sudo systemctl start chronyd sudo systemctl enable chronyd
タイムゾーン変更後にログが9時間ズレる
既存のログはタイムゾーン変更前の時刻で記録されています。journalctlは表示時に変換するため問題ありませんが、テキストログファイルは変換されません。変更前後でログの時刻基準が変わることを把握して解析しましょう。
Linux DNS設定の基本と合わせて、サーバー構築時に時刻・名前解決・NTPを一度に確認しておくと、後々のトラブルを防げます。
本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| 現在の時刻・タイムゾーン・NTP状態を確認する | timedatectl status |
| 利用可能なタイムゾーン一覧を表示する | timedatectl list-timezones |
| タイムゾーンをJSTに変更する | sudo timedatectl set-timezone Asia/Tokyo |
| NTP自動同期を有効にする | sudo timedatectl set-ntp true |
| NTP自動同期を無効にする | sudo timedatectl set-ntp false |
| 手動で日時を設定する(NTP無効時) | sudo timedatectl set-time "2026-05-03 10:30:00" |
| chronyの同期状態を詳細確認する | chronyc tracking |
| /etc/localtime の設定先を確認する | ls -la /etc/localtime |
タイムゾーンの設定、本当に理解できていますか?
サーバーの時刻管理は、ログ解析・cron実行・SSL証明書の有効期限確認など、現場の運用に直結するスキルです。timedatectlで設定できても、なぜズレるのか・NTPがどう動くのかを体系的に理解していなければ、本番トラブルで立ち往生してしまいます。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:fail2banコマンドでブルートフォース攻撃を自動ブロックする方法|SSHの不正アクセス対策とトラブルシュートも
- 前のページへ:semanageコマンドでSELinuxのポリシーを管理する方法|fcontext・port・booleanの実践設定も
- この記事の属するカテゴリ:Linuxtipsへ戻る

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