2026年7月3日

2026年7月3日

Linuxのタイムゾーン設定方法

はじめに

サーバーのタイムゾーンが「UTC」のままだと、ログのタイムスタンプと体感時刻がズレてトラブル調査が混乱します。日本国内で運用するサーバーであれば、明示的にAsia/Tokyoへ設定するのが鉄板です。

systemd環境ではtimedatectlコマンドが標準で、タイムゾーン変更からNTPの有効化、ハードウェアクロックとシステムクロックの整合性まで一元管理できます。古い/etc/localtimeのシンボリックリンク手動編集は、内部的に同じ結果になりますが、timedatectlの方が確実です。

本記事では、タイムゾーン設定の正しい手順と時刻同期の基本を解説します。

症状・背景

  • ログの時刻がUTC表示で日本時間と9時間ズレている
  • cronの定時実行時刻が想定とずれる
  • 複数サーバー間で時刻が微妙にズレ、ログ突合が困難
  • データベース内の日時カラムがUTCで保存されてしまう

手順・設定方法

ステップ1: 現在の時刻・タイムゾーン状態を確認

まずは現状把握から始めます。

# システム時刻とタイムゾーンを表示
timedatectl

# シンプルに現在時刻
date

# UTC表示で確認
date -u

# /etc/localtimeのリンク先
ls -l /etc/localtime

ステップ2: タイムゾーンを変更する

日本標準時に切り替えます。

# 利用可能なタイムゾーン一覧(Asia配下)
timedatectl list-timezones | grep Tokyo

# Asia/Tokyoを設定
sudo timedatectl set-timezone Asia/Tokyo

# 変更後の確認
timedatectl

# シンボリックリンクが切り替わっていることを確認
ls -l /etc/localtime

ステップ3: NTP(時刻同期)を有効化する

正確な時刻維持には必須の設定です。

# systemd-timesyncdを有効化
sudo timedatectl set-ntp true

# 同期状況の確認
timedatectl show-timesync --all 2>/dev/null || timedatectl status

# chronyを使う場合(より高機能)
sudo apt install -y chrony
sudo systemctl enable --now chronyd

# 同期ピアと精度を確認
chronyc sources
chronyc tracking

ステップ4: ハードウェアクロックとの整合

BIOS時計とOS時計の関係を整えます。

# RTC(ハードウェアクロック)の値を表示
sudo hwclock --show

# システム時刻をRTCに書き込む
sudo hwclock --systohc

# 逆にRTCからシステム時刻を取得
sudo hwclock --hctosys

# RTCをローカルタイムではなくUTCで運用(推奨)
sudo timedatectl set-local-rtc 0

注意事項

  • データベースやアプリのログイン時刻に依存する処理はタイムゾーン変更前に一旦停止
  • RTCはUTCに設定するのがLinux流、Windowsと併用時は別途調整が必要
  • NTPサーバー疎通不可だとサイレントに時刻ズレが続くため定期確認を
  • cronで定時実行している処理はタイムゾーン変更で実行時刻が変わるので注意

まとめ

1. 基本: timedatectl set-timezone Asia/Tokyo

2. NTP: timedatectl set-ntp true で自動同期

3. chrony: 本格運用なら高精度chronyを推奨

4. RTC: UTC運用が標準、ローカルタイム指定は避ける

5. 確認: timedatectlの出力で同期済み「synchronized: yes」を必ず見る

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ