Linuxのタイムゾーン設定[終了]


157

Linuxマシンでzoneinfoファイルをにコピーすることにより、タイムゾーンをGMT + 6に設定しています/etc/localtimeが、dateコマンドはまだ時間をとして表示していますUTCtime-6。誰もこの行動を説明できますか?

私はdateコマンドがUTCtime+6時間を表示するはずだと仮定しています。ここに私が従っているステップがあります:

date
Wed Jan 22 17:29:01 IST 2014

date -u
Wed Jan 22 11:59:01 UTC 2014

cp /usr/share/zoneinfo/Etc/GMT+6 /etc/localtime

date
Wed Jan 22 05:59:21 GMT+6 2014

date -u
Wed Jan 22 11:59:01 UTC 2014

TZ環境変数が設定されていecho $TZますか(空の行以外のものが生成されますか)?また/etc/localtime、実際のファイルをコピーするのではなく、へのシンボリックリンクを作成することをお勧めします(そうすれば、zoneinfoデータが変更される可能性が高く、ほとんど変更されない場合に安全です)。
サミレイン14年

ディストリビューションとは何ですか?異なるディストリビューションはこれを異なる方法で処理します!
slm

@slm:私は12.04 Ubuntuのに使用しています
ラーフルDhobi

このポリシーを知らなかった可能性がありますが、異なるSEサイトに同じQをクロスポストすることは想定されていません。stackoverflow.com/questions/21282367/timezone-setting-in-linux
slm

2
「この質問は複数のサイトに投稿されています」フー、私にとっては新しい質問です。そのような密接な理由でSEサイトに遭遇したことはありません。とにかく、これはLinuxでタイムゾーンを変更する方法を検索するときにGoogleで最初に出てくる質問であり、これは私が見たすべての質問の中で最も投票数の多い質問です。
Ajedi32

回答:


273

このブログ記事「How To:2 Methods To Change TimeZone in Linux」をご覧ください

Red Hatディストリビューション

Red Hatなどのディストリビューションを使用している場合、ファイルをコピーする方法はほとんど受け入れられます。

注:ディストリビューションに依存しないソリューションを探している場合、これはDebianでも機能しますが、Debianマシンにのみ関心がある場合は、以下の簡単なアプローチがあります。

$ ls /usr/share/zoneinfo/
Africa/      CET          Etc/         Hongkong     Kwajalein    Pacific/     ROK          zone.tab
America/     Chile/       Europe/      HST          Libya        Poland       Singapore    Zulu
Antarctica/  CST6CDT      GB           Iceland      MET          Portugal     Turkey       
Arctic/      Cuba         GB-Eire      Indian/      Mexico/      posix/       UCT          
Asia/        EET          GMT          Iran         MST          posixrules   Universal    
Atlantic/    Egypt        GMT0         iso3166.tab  MST7MDT      PRC          US/          
Australia/   Eire         GMT-0        Israel       Navajo       PST8PDT      UTC          
Brazil/      EST          GMT+0        Jamaica      NZ           right/       WET          
Canada/      EST5EDT      Greenwich    Japan        NZ-CHAT      ROC          W-SU         

ただし、コピーするのではなく、リンクすることをお勧めします。

$ sudo unlink /etc/localtime 
$ sudo ln -s /usr/share/zoneinfo/Etc/GMT+6 /etc/localtime

現在、日付は異なるタイムゾーンを示しています。

$ date -u
Thu Jan 23 05:40:31 UTC 2014

$ date 
Wed Jan 22 23:40:38 GMT+6 2014

Ubuntu / Debianディストリビューション

これらのディストリビューションのタイムゾーンを変更するには、次のコマンドを使用できます。

$ sudo dpkg-reconfigure tzdata

    SS#1

$ sudo dpkg-reconfigure tzdata

Current default time zone: 'Etc/GMT-6'
Local time is now:      Thu Jan 23 11:52:16 GMT-6 2014.
Universal Time is now:  Thu Jan 23 05:52:16 UTC 2014.

今、それをチェックアウトするとき:

$ date -u
Thu Jan 23 05:53:32 UTC 2014

$ date 
Thu Jan 23 11:53:33 GMT-6 2014

注: Ubuntu 14.04以降には、1つのコマンドでこのオプションがあります(ソース:Ubuntuに確認- ターミナルからタイムゾーンを設定):

$ sudo timedatectl set-timezone Etc/GMT-6

「Etc / GMT + 6」の使用について

SOに関する@MattJohnsonの回答からの抜粋

のようなゾーンEtc/GMT+6は、POSIX標準との後方互換性のために意図的に逆にされています。このファイルのコメントを参照してください。

これらのゾーンを使用する必要はほとんどありません。代わりに、America/New_YorkまたはEurope/Londonなどの完全に名前が付けられたタイムゾーンを使用する必要があります。こちらのリストを参照してください。



@ user3184706-あなたはちょっと混乱しました。ここでのあなたの質問は、私が答えたタイムゾーンの変更方法でした。GMTを使用することに関するタイムゾーン.SO Aが提供するタイムゾーンかどうかは正確ですが、私はそれをここに含めることを無視しました。私は、このAに、そのビットを追加するか、またはあなた自身のA.としてここにその情報をコピー/貼り付けることができます
のSLM

@ user3184706-これをクリーンアップするために、Matt's Aを私のものに含めて完成させました。
slm

1
ただし、コンテナ内にいる場合、Ubuntuではパッケージをインストールするtzdata必要があります/usr/share/zoneinfo。そうしないと、ファイルが存在しません。
エリオットスローター

1
timedatectl以下のために働くSLESすぎ12。
アレクサンダーマラホフ

24

これがUbuntuでのやり方です。Asia/Tokyo独自のタイムゾーンに置き換えるだけです。

echo 'Asia/Tokyo' | sudo tee /etc/timezone

sudo dpkg-reconfigure -f noninteractive tzdata

あるバグがtzdata:特定の値は、正規化によって得ますdpkg-reconfigure

echo 'US/Central' >/etc/timezone
dpkg-reconfigure -f noninteractive tzdata
# Current default time zone: 'America/Chicago'

echo 'US/Eastern' >/etc/timezone
apt-get install --reinstall tzdata
# Current default time zone: 'America/New_York'

これも機能しますが、Debian / Ubuntuでは、slmの答えはおそらく簡単でリスクが少ない(タイプミスの可能性はありません)
アンドレアスハートマン

17

tzselectコマンドは、あなたが望むことをするように作られています。


1
そして、それをTZ変数をローカルタイムゾーンに設定する1行に凝縮します(例:America / Los_Angelesの場合)export TZ=`printf "2\n49\n21\n1\n" | tzselect 2>&1 | tail -1` 。.profile , as tzselect`にこの行を追加すると、プロンプトで実行することができます。
15
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.