Linuxのタイムゾーンを変更する方法|timedatectl・/etc/localtime・TZ環境変数【RHEL9対応】


この記事の監修:宮崎智広(Linux教育歴15年以上・受講者3,100名超)
「Linuxサーバーの時刻がずれている。タイムゾーンが UTC のままになっている」
「RHEL9 / Rocky Linux 9 でタイムゾーンを JST に変更したい」

こういった場面はサーバーを初期セットアップするときに必ず遭遇します。
タイムゾーンの設定がずれていると、ログのタイムスタンプが9時間ずれたり、
cronの実行時刻がおかしくなったりと、様々なトラブルの原因になります。

この記事では、timedatectl コマンドによるタイムゾーン変更(RHEL9/Rocky9対応)から、
旧来の /etc/localtime を使った設定方法、tzselect・環境変数TZまで、
状況に応じた全パターンを解説します。

この記事のポイント

・RHEL9/Rocky9では timedatectl set-timezone Asia/Tokyo がタイムゾーン設定の標準コマンド
・現在のタイムゾーン確認は timedatectl または date コマンドで行う
・旧来の方法は /usr/share/zoneinfo/Asia/Tokyo を /etc/localtime へシンボリックリンク
・個人設定には環境変数 TZ="Asia/Tokyo" を使うことも可能


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

タイムゾーンとは何か

世界各地は地球の自転に基づく時差があり、地域ごとに標準時が異なります。

この地域ごとの標準時間帯を タイムゾーン と呼びます。
基準となるのは UTC(協定世界時)(グリニッジ標準時 GMT とほぼ同義)で、
日本は UTC+9(JST:日本標準時)です。

Linuxでは、タイムゾーン情報は /usr/share/zoneinfo/ ディレクトリ内の
バイナリファイルとして格納されています。
日本のタイムゾーンファイルは /usr/share/zoneinfo/Asia/Tokyo になります。

現在のタイムゾーンを確認する

1. timedatectl コマンドで確認(RHEL9/Rocky9推奨)

$ timedatectl Local time: 火 2026-04-07 15:30:00 JST Universal time: 火 2026-04-07 06:30:00 UTC RTC time: 火 2026-04-07 06:30:00 Time zone: Asia/Tokyo (JST, +0900) System clock synchronized: yes NTP service: active RTC in local TZ: no

`Time zone:` の行でタイムゾーンが確認できます。`Asia/Tokyo (JST, +0900)` となっていれば正常です。

2. date コマンドで確認

$ date 火 4月 7 15:30:00 JST 2026 # JST と表示されれば日本時間に設定されている

3. /etc/localtime の確認

$ ls -la /etc/localtime lrwxrwxrwx. 1 root root 35 Apr 7 12:00 /etc/localtime -> ../usr/share/zoneinfo/Asia/Tokyo # Asia/Tokyo へのシンボリックリンクになっていれば日本時間

timedatectl でタイムゾーンを変更する(RHEL9/Rocky9)

1. 利用可能なタイムゾーン一覧を確認

# 全リストの表示(多いのでgrepでフィルタ) $ timedatectl list-timezones | grep Asia Asia/Aden Asia/Almaty Asia/Amman Asia/Anadyr ... Asia/Tokyo Asia/Ulaanbaatar ... # Japanのみ表示 $ timedatectl list-timezones | grep Japan Japan

2. タイムゾーンを日本(JST)に設定

# Asia/Tokyo を設定(rootまたはsudoが必要) $ sudo timedatectl set-timezone Asia/Tokyo # 設定後に確認 $ timedatectl Local time: 火 2026-04-07 15:30:00 JST Universal time: 火 2026-04-07 06:30:00 UTC Time zone: Asia/Tokyo (JST, +0900) System clock synchronized: yes NTP service: active

timedatectl は systemd の機能として提供されており、
RHEL7以降のシステムでは基本的に使えます。再起動不要で即座に反映されます。

3. UTCに戻す場合

$ sudo timedatectl set-timezone UTC

/etc/localtime を使った旧来の設定方法

systemdを使わない旧来のLinux(または互換性のために知っておきたい場合)の設定方法です。

1. シンボリックリンクで設定する方法(推奨)

# 既存の /etc/localtime を削除してシンボリックリンクを作成 $ sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime # 確認 $ ls -la /etc/localtime lrwxrwxrwx. 1 root root 35 Apr 7 12:00 /etc/localtime -> /usr/share/zoneinfo/Asia/Tokyo

`-sf` オプションにより既存のファイルを強制的に置き換えます。

2. ファイルをコピーする方法

$ sudo cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

コピーの場合はシンボリックリンクと違い、zoneinfo ファイルが更新されても自動反映されません。
シンボリックリンク方式の方が管理しやすいのでこちらを推奨します。

tzselect コマンドで設定値を調べる

`tzselect` はどのタイムゾーン名を指定すればよいか分からない時に使うコマンドです。
インタラクティブなメニューで地域を選択すると、使用すべきタイムゾーン名を教えてくれます。

$ tzselect Please identify a location so that time zone rules can be set correctly. Please select a continent or ocean. 1) Africa 2) Americas 3) Antarctica 4) Arctic Ocean 5) Asia 6) Atlantic Ocean 7) Australia 8) Europe 9) Indian Ocean 10) Pacific Ocean #? 5 ← Asiaを選択 Please select a country. 1) Afghanistan ... 19) Japan ← Japanを選択 #? 19 The following information has been given: Japan Therefore TZ='Asia/Tokyo' will be used. Local time is now: Tue Apr 7 15:30:00 JST 2026. Universal Time is now: Tue Apr 7 06:30:00 UTC 2026. Is the above information OK? 1) Yes 2) No #? 1 You can make this change permanent for yourself by appending the line TZ='Asia/Tokyo'; export TZ to the file '.profile' in your home directory; then log out and log in again.

tzselect はあくまで「調べるコマンド」であり、実際のシステム設定は変更しません。
表示された `TZ='Asia/Tokyo'` の値を timedatectl または /etc/localtime の設定に使います。

環境変数 TZ でユーザー個別のタイムゾーンを設定する

システム全体ではなく、特定のユーザーだけ別のタイムゾーンを使いたい場合は
環境変数 TZ を設定します。

1. 一時的な設定(現在のセッションのみ)

$ export TZ="Asia/Tokyo" $ date 火 4月 7 15:30:00 JST 2026

2. 永続化(~/.bash_profile への追記)

$ vi ~/.bash_profile # 末尾に追記 export TZ="Asia/Tokyo" $ source ~/.bash_profile

3. 特定コマンドの実行時だけタイムゾーンを変える

# UTC時刻で date を表示 $ TZ="UTC" date Tue Apr 7 06:30:00 UTC 2026 # アメリカ東部時間で表示 $ TZ="America/New_York" date Tue Apr 7 02:30:00 EDT 2026

NTPサービスの確認(時刻同期)

タイムゾーンが正しくても、時刻そのものがずれている場合は NTP(ネットワーク時刻プロトコル)を確認します。

1. NTPサービスの状態確認(RHEL9)

RHEL9 / Rocky Linux 9 では chronyd が NTP クライアントとして動作しています。

# NTPサービスの状態確認 $ timedatectl System clock synchronized: yes ← yes なら正常同期中 NTP service: active ← active なら起動中 # chronyd の状態確認 $ systemctl status chronyd * chronyd.service - NTP client/server Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; preset: enabled) Active: active (running) since ... # 同期状況の詳細確認 $ chronyc tracking Reference ID : A9FEA97B (169.254.169.123) Stratum : 4 Ref time (UTC) : Tue Apr 07 06:30:00 2026 System time : 0.000001234 seconds fast of NTP time ...

トラブルシュート:タイムゾーン設定後も時刻がずれる

timedatectl で設定後も date コマンドの表示が変わらない

設定は即時反映されますが、既に起動しているプロセスには反映されません。
新しいターミナルセッションを開くか、関連サービスを再起動してください。

# 設定確認 $ timedatectl | grep "Time zone" Time zone: Asia/Tokyo (JST, +0900) # 新しいターミナルで date を確認 $ date 火 4月 7 15:30:00 JST 2026

クラウド(AWS EC2等)でタイムゾーンが戻る

AWS EC2 では再起動後に /etc/localtime が UTC に戻ることがあります。
timedatectl を使った設定であれば恒久的に保持されます。

# 恒久的に設定(timedatectl 推奨) $ sudo timedatectl set-timezone Asia/Tokyo # または /etc/timezone ファイルを作成(Debianベース系の方法) $ echo "Asia/Tokyo" | sudo tee /etc/timezone

本記事のまとめ

操作 コマンド
現在のタイムゾーンを確認 timedatectl または date
利用可能なタイムゾーン一覧 timedatectl list-timezones
タイムゾーンを日本に設定 sudo timedatectl set-timezone Asia/Tokyo
シンボリックリンクで設定(旧来の方法) sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
タイムゾーン名を対話式で調べる tzselect
ユーザー個別のタイムゾーン設定 export TZ="Asia/Tokyo"
NTP同期状態を確認 timedatectl | grep synchronized

サーバー初期構築時はタイムゾーンの設定を最初に確認する習慣をつけましょう。
ログのタイムスタンプがずれていると後の調査が難しくなります。

サーバー構築時の初期設定全般については環境変数PATHの設定方法も合わせて参照してください。
NTPサービスの詳細についてはLinuxサーバー構築ガイドをご覧ください。

Linuxサーバーの初期設定から運用まで体系的に学びたい方へ

タイムゾーン設定のようなサーバー初期構築の手順を正確に理解しておくことが、安定運用の第一歩です。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、「Linuxサーバー構築入門マニュアル(図解60P)」を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。


暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録

宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。