Ubuntu 18.04 サーバーでのタイムゾーンの設定方法

Ubuntu 18.04 サーバーでシステムのタイムゾーンを変更するには、まず timedatectl list-timezones で名前を確認し、sudo timedatectl set-timezone Asia/Seoul に示されているように設定します。tzselect はタイムゾーン名を見つけるためのツールであり、それ単体で実行してもシステム全体の設定は変更されません。

タイムゾーンとシステム時刻の違い

タイムゾーンとは、同じ瞬間を現地の日付と時刻として表示するために適用されるルールです。例えば、Asia/Seoul はソウルのタイムゾーン名であり、UTC(協定世界時)より9時間進んでいます。タイムゾーンを変更しても、一般には表示ルールが変わるだけで、インターネットの時間サーバーと時計が同期されるわけではありません。

サーバーの現地時刻に基づいて動作するスケジュールされたタスクやログ解析がある場合は、まず変更の影響を確認してください。一部のプログラムは独自のタイムゾーン設定や環境変数を使用するため、システム設定と異なる表示になる場合があります。Ubuntu 18.04 の一般的なセキュリティサポートは終了しているので、Ubuntu セキュリティメンテナンススケジュール で該当範囲を確認し、サポートされているバージョンへの移行を計画してください。

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

システムの時刻とタイムゾーンの設定を確認するには、次のコマンドを使用します。変更を加える前にTime zoneに表示されている名前を記録しておくと、後で元に戻すことができます。

timedatectl status
date
date -u

timedatectl statusはシステムのローカル時間、UTC、およびタイムゾーンを表示します。dateは現在の環境に適用されるローカル時間を表示し、date -uはUTCを表示します。現在のシェルでTZ環境変数が設定されている場合、dateの出力はシステムのデフォルトタイムゾーンと異なる場合があります。

timedatectlを使用してシステムのタイムゾーンを変更する

まず、利用可能なタイムゾーン名を確認します。リストはインストールされているタイムゾーンデータによって異なる場合があります。

timedatectl list-timezones | grep -F 'Asia/Seoul'

Asia/Seoul がリストにある場合、次のコマンドでシステムのタイムゾーンを設定してください。管理者権限が必要です。別の地域にいる場合は、リストにある名前に置き換えてください。

sudo timedatectl set-timezone Asia/Seoul
timedatectl status

コマンドが成功すると、選択した名前が Time zone に表示されます。エラーが発生した場合は、名前の大文字小文字、利用可能なリスト、管理者権限を確認してください。このコマンドは、システムが systemd を使用していない場合や、コンテナで変更が制限されている場合は使用できないことがあります。

元のタイムゾーンに戻すには、変更前に記録した名前を同じコマンドの引数として使用してください。例えば、前回の値が Etc/UTC の場合のみ、次のコマンドを使用します。

sudo timedatectl set-timezone Etc/UTC
timedatectl status

このコマンドは/etc/localtimeのタイムゾーン設定を変更します。ハードウェアのリアルタイムクロック(RTC)が現地時間に設定されている場合、RTCにも影響を与える可能性があります。詳細については、Ubuntu 18.04 timedatectlマニュアルを参照してください。

tzdataおよびtzselectの使用

次のコマンドを使用して、インタラクティブメニューでシステムのタイムゾーンを設定することもできます。地域のリストでAsiaを選択し、都市のリストでSeoulを選択します。メニューの番号は環境によって異なる場合があるため、画面に表示される項目を確認してください。

sudo dpkg-reconfigure tzdata

完了後、timedatectl statusでシステムのタイムゾーンを再確認してください。一方で、tzselectは選択されたタイムゾーンの名前のみを表示し、システム全体のタイムゾーンを変更することはありません。地域と都市を選択して得られた名前をtimedatectl set-timezoneの引数に使用できます。

tzselect

異なるタイムゾーンで特定のコマンドを実行するには、そのコマンドに対してTZを指定できます。以下の例は、dateの単一実行にのみ適用され、システム設定を変更することはありません。

TZ=Asia/Seoul date

export TZ=Asia/Seoulは現在のシェルおよびそのシェルから起動したプログラムに影響しますが、システム全体の設定は変更しません。現在のシェルではunset TZでこの変数を解除できます。詳細については、Ubuntu tzselectマニュアルを参照してください。

画面設定と変更後の確認

グラフィカルデスクトップがインストールされている場合は、日時項目でタイムゾーンを選択することもできます。自動タイムゾーン設定が有効になっている場合、手動での選択が制限されることがあります。メニューの場所はデスクトップ環境によって異なり、典型的なサーバーインストールではグラフィカルインターフェースがない場合があります。

変更後、timedatectl statusを確認し、影響を受けるサービスのログやスケジュールタスクを確認してください。タイムゾーンが正しいにもかかわらず実際の時刻が正しくない場合は、時間同期サービスとネットワーク接続を個別に確認する必要があります。特定のアプリケーションのみ異なる時刻を表示する場合は、そのプロセスのTZおよびアプリケーション設定も確認してください。