端末からタイムゾーンを設定する


210

端末からシステムクロックのタイムゾーンを変更したい。

これは

tzselect

「ターミナルでGUIを開きます」

または

sudo cp /usr/share/zoneinfo/Europe/London /etc/localtime

「これはgmtに設定されます」

しかし、オフセットだけでタイムゾーンを設定する方法はありますか?-1または+5など?

タイムオフセットを調整したり、ログを報告するアプリケーションを書いているので、これを行う必要があります。私が持っている情報はユーザーIPだけです。私はwebappを使用してIPの場所を見つけることができますが、場所のオフセットを取得できる場合は簡単にオフセットを設定する必要がありますが、ゾーンと都市を見つける必要がある場合は本当に苦痛です。

+/- hourでシステムクロックを設定する方法の答えを誰かが知っているなら、それは素晴らしいことです。


受け入れられた答えを手伝ってください。@Mitch
Nam G VU

1
@NamGVUいいえ、Mitch'sは最善の解決策ではありません。「端末のGUI」の答えです。OPでも「これはユーザー入力なしでプログラムからタイムゾーンをアルトする必要があるので機能しません.GUIソリューションではなくターミナルにフィードできるコマンドが必要です」と述べましたが、それは「ターミナルソリューション「スクリプトに優しいもの。Collin Andersonの方が都市を知っている場合、またはRyanの方がプレーンGMT + -nの場合
-Xen2050

ubuntu 18.04では、tzselectはGUIを開きません。端末ベースのメニュー選択があります。
ティムリチャードソン

回答:


321

端末からタイムゾーンを変更するには、キーボードのCtrl+ Alt+ Tを押して端末を開きます。開いたら、以下のコマンドを実行します:

sudo dpkg-reconfigure tzdata

開いたら、画面に従ってタイムゾーンを変更します。


14
この文句を言わない仕事私は私が返事を端子にないGUIソリューションのおかげを養うことができますコマンドを必要とするユーザー入力せずにプログラムからALTRのタイムゾーンに必要として
user2155009

1
どうも!!!これは役立ちます、byt私はすでに手動で変更されていますetc / timezone =)php.net/manual/en/timezones.phpのように!!! まったく同じ!!!
ウラジミールCh

tzdataを再構成すると、ハードウェアクロックも調整されるため、表示される時間がタイムゾーンの切り替え後も変わらないようになります。あなたの時間は正しいが、タイムゾーンが間違っていたなら、あなたはそれを望むかもしれません。ただし、旅行中にハードウェアの時計に触れたくないことは間違いありません。timedatectlのアプローチは、唯一のタイムゾーンを変更するようです。
SnakE

私の@SnakEはそれに応じて時間の変更を表示しました
-RiaD

あなたが私の友人と言った理由は何の問題もなくパマからコンマ行に変更しましたか?@ADTC
セイバーtabatabaee yazdi

170

また、新しいtimedatectlを使用して14.04に時間を設定することもできます。

sudo timedatectl set-timezone America/New_York

どのようにubuntuにインストールしますか?
ゼロによる除算

1
14.04にデフォルトでインストールされます。
コリンアンダーソン

6
利用可能なオプションをすべて表示するには、を実行できますls -R --group-directories-first /usr/share/zoneinfo(ここでファイルを変更したり消去したりしないように注意してください。)詳細posixright接頭辞はこちらです。
ADTC

これは動作します!...
ダンニッセンバウム

3
sudo timedatectl set-timezone Etc/UTCUTCに使用します。
ゾルタン

19

でGMT± xファイルを使用できます/usr/share/zoneinfo/Etc

sudo ln -fs /usr/share/zoneinfo/Etc/GMT$offset /etc/localtime

返信に感謝allotエラーを取得ln:シンボリックリンクの作成に失敗しました `/ etc / localtime ':ファイルが存在するoboiuslyわからないコマンドを正しく使用していますか?IM + 1gmtにクロックを設定するためにsudoのLNを/ usr / share / zoneinfoのは/ etc / GMT $ + 1の/ etc / localtimeの使用
user2155009

9
ミニテックは、私がそう思う力フラグを忘れた-> sudo ln -sf ....-
テレ

1
これは少し動作しますが、のtz名を更新しません/etc/timezone
-poolie

1
/ etc / timezoneを更新するには、次を実行しますsudo dpkg-reconfigure --frontend noninteractive tzdata
Pierre Gramme

17

このスレッドは少し古くなっていますが、ユーザーがWebサイトからダウンロードして展開した後にVMのタイムゾーンを自動的に設定する必要があるため、より良いソリューションを探していました。ここに私が終わったものがあります:

echo "Setting TimeZone..."
export tz=`wget -qO - http://geoip.ubuntu.com/lookup | sed -n -e 's/.*<TimeZone>\(.*\)<\/TimeZone>.*/\1/p'` &&  timedatectl set-timezone $tz
export tz=`timedatectl status| grep Timezone | awk '{print $2}'`
echo "TimeZone set to $tz"

これは、新しいネットワーク上で開始されたサーバーからgeoip.ubuntu.comを照会し(私のスクリプトは最初の接続をチェックします)、応答に基づいてサーバーのタイムゾーンを設定します。

「wget -q0-」は、結果のみをstdoutに出力し、その後$ tz変数にパイプするようにwgetに指示します。

それが誰かを助けることを願っています!


1
すばらしいです!Ubuntu 16.04では、代わりに「grep zone」および「print $ 3」にする必要があります。
user334639 16

タイムゾーンを取得するための別のCLIを提案します。私の見解では少しきれいです:curl -s ' geoip.ubuntu.com/lookup ' | xmllint --xpath '/ Response / TimeZone / text()'
ダーコマイルティック

11

TL; DR /etc/localtimeは、のファイルを指すシンボリックリンクです/usr/share/zoneinfo/Continent/City。それが指す場所を変更することで、タイムゾーンを変更できます。

タイムゾーンを変更するには、削除し/etc/localtimeて、目的の都市へのシンボリックリンクを割り当てます。たとえばls -l /etc/localtime、このファイルがを指していることを報告します/usr/share/zoneinfo/America/Denver。ニューヨークに変更するには、

  1. sudo rm /etc/localtime
  2. sudo ln -s /usr/share/zoneinfo/America/New_York /etc/localtime
  3. 時計が更新されるまでしばらくお待ちください

以下のスクリーンショットは、手順と確認を示しています timedatectl

ここに画像の説明を入力してください


カーテンの後ろで何が起こっているのかを理解するのは良いことですが、dpkg-reconfigure tzdataなどのように、このために指定されたツールを提案した方が良いと思いませんか?
パトリック

@PatrickCornelissenまず第一に、tzdataすでに答えがあるので、同じことを提案するのは無意味です。第二に、tzdataほとんど同じです。自分が好むものを決定するのはユーザー次第であるため、良くも悪くもありません-単に人の好みです。
セルギーコロディアズニー

1
まあ、多くの場合、配布ツール「反対」の作業は問題につながるので、可能であれば、私はあなたのアプローチを避けるためだろうが、あなたのソリューションは、(現在は)うまくいく十分なフェア
パトリックCornelissen

私が理解しているように、このソリューションはさまざまなディストリビューションで機能します。ただし、/ usr / share / zoneinfoディレクトリにあるタイムゾーンデータベースが必要です。tzdataパッケージをインストールせずにタイムゾーンデータベースを取得する方法はありますか?
アンドホ

@andho /var/lib/dpkg/info/tzdata.listはすべてのアイテムが/usr/share/zoneinfoそのパッケージに付属していることを示唆しているので、すべてのアイテムを用意するためにパッケージをインストールする必要があると仮定しますが、率直に言って、これが他のアイテムでどのように機能するかについてよく知らない分布。これをUnix&Linuxの質問として質問することを検討してください。質問のコンテキストを提供したい場合は、この投稿を参照してください。
セルギーKolodyazhnyy

10

タイムゾーンを更新する簡単な方法はを使用することsudo dpkg-reconfigure tzdataです。しかし、これはそれほど簡単にスクリプト化されていません。

スクリプトを介してタイムゾーンを明示的に設定したい場合(VMのセットアップなど)、ここにレシピがあります:

希望するタイムゾーンの変数を設定します。例えば、

tz=Europe/London
tz=America/Anchorage
tz=Etc/GMT+6

有効な値は、以下のディレクトリとファイル名/usr/share/zoneinfoです。

それから単に

sudo cp -vf /usr/share/zoneinfo/$tz /etc/localtime
echo $tz | sudo tee /etc/timezone

両方のことに注意してください/etc/localtime/etc/timezone一致している必要があります。

おそらく今度は再起動して、すべてのサービスも更新します(cronなど)。


-1:cp/ etc / localtimeの設定に使用しないでください。/ etc / localtimeは正しいファイルへのシンボリックリンクです。cpそれを変更するために使用すると、実際に現在指しているtzdataファイルの内容を上書きするため、突然(たとえば)UTC tzdataファイルにUTCの代わりにEurope / Londonのタイムゾーンデータが含まれます。私は個人的な経験から言うことができるよう)、トラブルシューティングするには
Foogod

5

私が使用する方法は次のとおりです。米国以外のタイムゾーンについて心配する必要がないため、米国中心です。

現在のタイムゾーンを特定する必要がある場合は、次のいずれかを行います。

cat /etc/timezone  

または

sudo hwclock --show  

私はそれから:

timedatectl set-timezone <_designation_>

どこ<_designation_>次のいずれかです。

アメリカ/東
アメリカ/中央
アメリカ/山
アメリカ/太平洋
アメリカ/アラスカ
アメリカ/アリューシャン
アメリカ/アリゾナ
アメリカ/東インディアナ
アメリカ/ハワイ
アメリカ/インディアナスターク
アメリカ/ミシガン
アメリカ/太平洋ニュー
アメリカ/サモア

例えば:

timedatectl set-timezone US/Eastern  

他のタイムゾーンの指定については、https//en.wikipedia.org/wiki/List_of_tz_database_time_zonesをご覧ください。


tzselectタイムゾーン文字列を取得する良い方法です
マーティントーマ

0

各タイムゾーンオフセットに対応させるタイムゾーンファイルを選択しない限り、これを行うことはできません。

/ usr / share / zoneinfo / Etcのファイルを使用することを提案する回答もありましたが、これらの問題はDSTに依存しないことです。

したがって、各オフセットに一致するタイムゾーン構成を選択するか、DSTを気にしない限り、汎用的に実行する方法はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.