web-dev-qa-db-ja.com

ユーザーのタイムゾーンを変更するには?

(たとえばDebianでは)dpkg-reconfigure tzdatasystemのタイムゾーンを変更しますが、serタイムゾーンをどのように変更できるのか(Linux/Unixがこのようなアイデアをサポートしている場合)。

私は通常、sshを介してリモートでサーバー上で作業しますが、サーバーが内部でUTC(ファイルなど)で動作し、タイムゾーンが表面的である場合、接続元に応じて希望のタイムゾーンで時間を確認したいと思います。これは可能ですか?

11
Loax

TZ環境変数を使用します。例えば。:

bash$ export TZ=US/Pacific
bash$ date
Mon Mar  3 00:31:17 PST 2014
bash$ export TZ=US/Eastern
bash$ date
Mon Mar  3 03:33:06 EST 2014

TZの可能な値は、ディレクトリ/usr/share/zoneinfoにあります(たとえば、/usr/share/zoneinfo/US/Pacificの存在を参照してください)。

13
samiam

まず、sshサーバーとsshクライアントの設定が必要です。

サーバーの/etc/ssh/sshd_configで、TZ変数を受け入れるようにしてください。

AcceptEnv LANG LC_* TZ

クライアントの/etc/ssh/ssh_configまたは~/.ssh/configで、必ずTZ変数を送信します。

SendEnv TZ

(デフォルトでは通常、クライアントから何も送信せず、サーバーでは何も受け入れません。)

次に、sshコマンドのエイリアスを作成し、TZセッションで現在のsshを使用します。次の行を.bashrcファイルに追加します。

alias ssh='TZ=${TZ:-"$(cat /etc/timezone)"} ssh'

または、システムに/etc/timezoneがない場合に使用します。

alias ssh='TZ=${TZ:-"$(date +%Z)"} ssh'

次に、リモートサーバーにsshするたびに、サーバーの時刻がローカルタイムゾーンに基づいて表示されます。

8
cuonglm