このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Linux】タイムゾーンの確認と変更

タイムゾーンの確認と変更
Linuxシステムにおけるタイムゾーンの設定は、システム全体の時間管理において非常に重要な役割を果たします。正確なタイムゾーン設定は、ログファイルのタイムスタンプ、スケジュールされたジョブの実行時間、そして各種アプリケーションの動作に直接影響を与えます。
まず、タイムゾーン設定がどのように構成されているかを理解することが重要です。Linuxでは、タイムゾーン設定が /etc/localtime
ファイルによって管理されており、このファイルは実際のタイムゾーンデータファイルへのシンボリックリンクとして機能します。また、タイムゾーンデータファイルは /usr/share/zoneinfo
ディレクトリに格納されており、世界中のあらゆる地域に対応しています。
タイムゾーンの確認

1.デフォルトのタイムゾーン設定の確認
デフォルトのタイムゾーンは /etc/localtime
ファイルで設定されています。このファイルはタイムゾーン情報へのシンボリックリンクであり、リンク先のファイルによってタイムゾーンが決まります。
確認方法
・「ls -l /etc/localtime
」コマンドを実行します。
user01@ubuntu-vm:~$ ls -l /etc/localtime
lrwxrwxrwx 1 root root 30 7月 8 23:24 /etc/localtime -> /usr/share/zoneinfo/Asia/Tokyo
上記の例では、/etc/localtime
が /usr/share/zoneinfo/Asia/Tokyo
というタイムゾーンファイルへのリンクであることが分かります。これは、タイムゾーンが「Asia/Tokyo」(日本時間)に設定されていることを示しています。
2.現在のシステム時間の確認
確認方法
・「date
」コマンドを実行します。
user01@ubuntu-vm:~$ date
2024年 7月 19日 金曜日 23:57:19 JST
出力に「JST」と表示されることから、日本標準時(Japan Standard Time)であることが確認できます。
/usr/share/zoneinfo
ディレクトリ
タイムゾーン情報の格納場所
タイムゾーン情報は /usr/share/zoneinfo
ディレクトリにバイナリデータとして格納されています。このディレクトリには、世界中のさまざまな地域に対応するタイムゾーン情報が含まれています。
確認方法
・「ls /usr/share/zoneinfo
」コマンドを実行します。
user01@ubuntu-vm:~$ ls /usr/share/zoneinfo
Africa Cuba GMT+0 Kwajalein Poland Zulu
America EET GMT-0 Libya Portugal iso3166.tab
Antarctica EST GMT0 MET ROC leap-seconds.list
Arctic EST5EDT Greenwich MST ROK leapseconds
Asia Egypt HST MST7MDT Singapore localtime
Atlantic Eire Hongkong Mexico Turkey posix
Australia Etc Iceland NZ UCT posixrules
Brazil Europe Indian NZ-CHAT US right
CET Factory Iran Navajo UTC tzdata.zi
CST6CDT GB Israel PRC Universal zone.tab
Canada GB-Eire Jamaica PST8PDT W-SU zone1970.tab
Chile GMT Japan Pacific WET zonenow.ta
この例から、世界中のタイムゾーン情報が含まれていることが確認できます。ファイルの内容はバイナリデータであるため、cat
コマンドでは直接内容を確認できません。
タイムゾーンの変更
タイムゾーンを変更するには、/etc/localtime
のリンク先を変更するか、/usr/share/zoneinfo
にあるタイムゾーンファイルを /etc/localtime
にコピーする方法があります。
タイムゾーン変更手順
たとえば、日本時間からアメリカの「New York」タイムゾーンに変更する場合の手順は以下の通りです。
1.タイムゾーンファイルの確認
・「ls /usr/share/zoneinfo/America/New_York
」コマンドを実行します。
このファイルが存在することを確認します。
user01@ubuntu-vm:~$ ls /usr/share/zoneinfo/America/New_York
/usr/share/zoneinfo/America/New_York
2.タイムゾーンをニューヨークに変更
・「sudo ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime
」コマンドを実行します。
ln -sf
コマンドを使用して、/etc/localtime
のリンクを America/New_York
のタイムゾーンファイルに変更します。パスワードの入力が求められたら、パスワードを入力します。
user01@ubuntu-vm:~$ sudo ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime
[sudo] user01 のパスワード:
「 ln -sf」コマンドの意味
このコマンドを使うと、指定されたターゲットのシンボリックリンクを強制的に作成または更新します。既存のリンクやファイルが存在する場合でも、それらを削除して新しいリンクを作成します。
ln
コマンド
ln
コマンドはリンク(ハードリンクまたはシンボリックリンク)を作成するためのコマンドです。
-s
オプション
-s
は「シンボリックリンク(symbolic link)」を作成するためのオプションです。シンボリックリンクは、指定されたターゲットファイルまたはディレクトリのパスを指す特殊なファイルです。シンボリックリンクは、ターゲットファイルが移動または削除された場合に無効になりますが、ハードリンクはそのまま残ります。
-f
オプション
-f
は「強制(force)」のオプションです。すでに存在する同名のファイルやリンクがある場合、そのファイルやリンクを強制的に上書きします。
3.変更の確認
・「date
」コマンドを実行します。
出力が「EDT」(Eastern Daylight Time)であることから、タイムゾーンが「America/New_York」に変更されたことが確認できます。
user01@ubuntu-vm:~$ date
2024年 7月 19日 金曜日 11:23:22 EDT
4.タイムゾーンを日本に戻す
・「sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
」コマンドを実行します。
/etc/localtime
のリンクを日本のタイムゾーンファイルに変更します。パスワードの入力が求められたら、パスワードを入力します。
user01@ubuntu-vm:~$ sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
[sudo] user01 のパスワード:
5.変更の確認
・「date
」コマンドを実行します。
変更後、date
コマンドでタイムゾーンが戻されたことを確認します。「JST」(Japan Standard Time)が表示されれば、タイムゾーンが日本に戻されたことが確認できます。
user01@ubuntu-vm:~$ date
2024年 7月 20日 土曜日 00:37:26 JST
まとめ
タイムゾーンの確認
/etc/localtime
がタイムゾーンファイルへのシンボリックリンク。date
コマンドで現在のタイムゾーンと時間を確認できる。/usr/share/zoneinfo
ディレクトリ- 世界中のタイムゾーン情報がバイナリ形式で格納されている。
タイムゾーンの変更
- シンボリックリンクを変更するか、タイムゾーンファイルをコピーして変更する。
- 変更後は
date
コマンドで確認する。
この方法で、タイムゾーンの確認と変更を適切に行うことができます。