「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" を使うことも可能
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
タイムゾーンとは何か
世界各地は地球の自転に基づく時差があり、地域ごとに標準時が異なります。この地域ごとの標準時間帯を タイムゾーン と呼びます。
基準となるのは 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
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
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
2. ファイルをコピーする方法
$ sudo cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
シンボリックリンク方式の方が管理しやすいのでこちらを推奨します。
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.
表示された `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日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
