จะเปลี่ยนเขตเวลาของผู้ใช้ได้อย่างไร?


11

ฉันรู้ว่า (เช่นใน Debian) สามารถใช้dpkg-reconfigure tzdataเพื่อเปลี่ยนเขตเวลาของระบบแต่ฉันสงสัยว่าจะเปลี่ยนเขตเวลาของผู้ใช้ได้อย่างไร (ถ้า Linux / Unix สนับสนุนแนวคิดดังกล่าว)

ปกติฉันทำงานบนเซิร์ฟเวอร์จากระยะไกลผ่าน ssh และเนื่องจากเซิร์ฟเวอร์ทำงานกับ UTC ภายใน (ไฟล์, ... ) และเขตเวลาค่อนข้างตื้นฉันต้องการดูเวลาในเขตเวลาที่ฉันต้องการตามที่ฉันกำลังเชื่อมต่อ เป็นไปได้ไหม


คุณลองทำอะไร คุณยังค้นหา "ssh ที่ส่งผ่านข้อมูล TZ" บนเว็บเลยหรือไม่?
Anthon

คำตอบ:


13

ใช้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)


ในกรณีของฉันdateให้เวลาที่แตกต่างกัน Zose uname -aและเวลามากกว่า ทำไมถึงเป็นเช่นนั้น?
Geremia

8

ก่อนอื่นคุณต้องกำหนดค่าบางอย่างสำหรับเซิร์ฟเวอร์ 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ไปยังเซิร์ฟเวอร์ระยะไกลเวลาบนเซิร์ฟเวอร์จะแสดงตามเขตเวลาท้องถิ่นของคุณ


นอกจากนี้คุณยังสามารถใช้TZ=$(date +%Z)กับวันที่ (Linux / * BSD / Solaris) รุ่นล่าสุดได้ซึ่งจะทำงานได้ดีขึ้นในระบบที่/etc/timezoneไม่ได้ทำอะไรเลย
mr.spuratic

เตือนความจำที่เป็นมิตร อย่าลืมรีสตาร์ท sshd เพื่อให้การเปลี่ยนแปลงมีผล ใน Ubuntu "service ssh restart"
cavalcade
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.