1. 概要

このチュートリアルでは、Linuxでシステムタイムゾーンを取得するさまざまな方法を見ていきます。

2. タイムゾーン表現

タイムゾーンを表す方法はいくつかあります。 一つには、それらは単にそれらの名前の省略形として表すことができます。 たとえば、東部標準時(北アメリカ)は通常ESTと省略されます。 それに加えて、UTCからのオフセットとして表すこともできます。 たとえば、ESTタイムゾーンはUTC-4です。 最後に、各タイムゾーンは、 America /New_YorkなどのIANAタイムゾーンデータベースで指定された名前で表すこともできます。

3. TZ環境変数

Linuxでは、TZ環境変数はシステムのタイムゾーンを指定します。 設定されている場合、システムのタイムゾーンとして優先されます。 その値を確認するには、 echo コマンドを使用して、コンテンツをコンソールに出力します。

$ echo $TZ
Europe/Madrid

4. dateコマンド

date コマンドは、システムの日付と時刻を処理するためのコマンドラインツールです。 dateコマンドを使用して、タイムゾーンの省略名またはそれに相当するUTCオフセットを取得できます。 date コマンドは、タイムゾーン情報をオフセットまたは省略名で出力できるようにするformat引数を受け入れます。

たとえば、タイムゾーンの省略名を取得するには、 dateコマンドを%Z形式で使用できます。

$ date +%Z
CEST

さらに、%z形式のUTCオフセット表現でタイムゾーンを印刷することもできます。

$ date +%z
+0200

オフセットは、現在のシステムタイムゾーンがUTCより2時間進んでいることを示しています。

5. timedatectl

systemdに付属するすべてのLinuxディストリビューションについて、timedatectlコマンドはシステムの詳細な時刻情報を提供します。 この情報には、UTCの時刻、現地時間、およびシステムのタイムゾーンが含まれます。

$ timedatectl
               Local time: Tue 2022-05-03 08:01:41 CEST
           Universal time: Tue 2022-05-03 06:01:41 UTC 
                 RTC time: Tue 2022-05-03 06:01:41     
                Time zone: Europe/Madrid (CEST, +0200) 
System clock synchronized: yes                         
              NTP service: active                      
          RTC in local TZ: no

出力から、タイムゾーンのさまざまな表現が現在の日付と時刻とともに印刷されていることがわかります。

さらに、 show引数を渡して、情報を機械可読形式で出力できます

$ timedatectl show
Timezone=Europe/Madrid
LocalRTC=no
CanNTP=yes
NTP=yes
NTPSynchronized=yes
TimeUSec=Fri 2022-05-03 06:01:47 CEST
RTCTimeUSec=Fri 2022-05-03 06:01:46 CEST

6. / etc /localtimeファイル

/ etc / localtimeファイルからタイムゾーン情報を取得することもできます。実際のところ、timedatectlコマンドは実際にはこのファイルから内部で読み取ります。

/ etc / localtime ファイルは、実際のタイムゾーンのバイナリファイルへのシンボリックリンクです。 値を取得するには、 ls -l を実行して、ポイントしている実際のタイムゾーンファイルを確認できます。

$ ls -l /etc/localtime
lrwxrwxrwx 1 user user 33 Dec 29 09:44 /etc/localtime -> /usr/share/zoneinfo/Europe/Madrid

シンボリックリンクから、システムのタイムゾーンがヨーロッパ/マドリードに設定されていることを直接識別できます。

または、 zdumpコマンドを使用して、バイナリファイルの内容をすぐに読み取ることができます

$ zdump /etc/localtime
/etc/localtime  Tue May  3 08:16:16 2022 CEST

zdump コマンドは、タイムゾーンに加えて、指定されたタイムゾーンでのシステムの現在の日付と時刻も出力します。

7. / etc /timezoneファイル

最後に、システムのタイムゾーンをプレーンテキスト形式で保存する/ etc/timezoneファイルがあります。catコマンドを使用してタイムゾーンを簡単に読み取ることができます。

$ cat /etc/timezone
Europe/Madrid

8. 概要

このチュートリアルでは、Linuxシステムのタイムゾーンを取得するさまざまな方法を見てきました。 たとえば、 TZ 環境ではタイムゾーンを指定でき、優先順位が最も高いことがわかりました。 次に、システムのタイムゾーンを取得する便利な方法として、dateおよびtimedatectlコマンドラインツールについて説明しました。 最後に、 / etc /localtimeファイルと/etc / timezone ファイルを調べて、タイムゾーン情報も取得しました。