このページで解説している内容は、以下の 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_York2.タイムゾーンをニューヨークに変更
・「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 EDT4.タイムゾーンを日本に戻す
・「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コマンドで確認する。
この方法で、タイムゾーンの確認と変更を適切に行うことができます。
