Bagaimana cara mengubah zona waktu pengguna?

11

Saya tahu bahwa (misalnya dalam Debian) dapat digunakan dpkg-reconfigure tzdatauntuk mengubah zona waktu sistem tetapi saya bertanya-tanya bagaimana orang dapat mengubah zona waktu pengguna (jika Linux / Unix mendukung gagasan semacam itu sama sekali).

Saya biasanya bekerja di server dari jarak jauh melalui ssh dan mengingat bahwa server bekerja dengan UTC secara internal (file, ...) dan zona waktu agak dangkal, saya ingin melihat waktu di zona waktu yang saya inginkan tergantung di mana saya terhubung. Apakah ini mungkin?

Loax
sumber
Apa yang kamu coba? Apakah Anda bahkan mencari "ssh passing on TZ information" di web?
Anthon

Jawaban:

13

Gunakan TZvariabel lingkungan. Misalnya:

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

Nilai yang mungkin untuk TZberada di direktori /usr/share/zoneinfo(lihat, misalnya, keberadaan /usr/share/zoneinfo/US/Pacific)

samiam
sumber
Dalam kasus saya, dateberikan perbedaan waktu dan waktu daripada uname -a. Kenapa bisa begitu?
Geremia
8

Pertama, Anda memerlukan beberapa konfigurasi untuk ssh server dan ssh client.

Di Server, di /etc/ssh/sshd_config, pastikan Anda menerima TZvariabel:

AcceptEnv LANG LC_* TZ

Di Klien, di /etc/ssh/ssh_configatau ~/.ssh/config, pastikan Anda mengirim TZvariabel:

SendEnv TZ

(Defaultnya adalah tidak mengirim apa pun dari klien, dan tidak menerima apa pun di server.)

Kemudian membuat alias untuk sshperintah untuk menggunakan Anda saat ini TZdi sshsesi. Tambahkan baris ini ke .bashrcfile:

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

atau gunakan ini untuk sistem tidak memiliki /etc/timezone:

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

Kemudian setiap kali Anda sshke server jarak jauh, waktu di server akan ditampilkan berdasarkan zona waktu lokal Anda.

cuonglm
sumber
Anda juga dapat menggunakan TZ=$(date +%Z)dengan sebagian besar versi (Linux / * BSD / Solaris) tanggal, ini akan bekerja lebih baik pada sistem di mana /etc/timezonebukan hal yang dilakukan.
mr.spuratic
Pengingat ramah. Ingatlah untuk memulai kembali sshd agar perubahan diterapkan. Di ubuntu "service ssh restart"
cavalcade