사용자 시간대를 변경하는 방법은 무엇입니까?


11

나는 (예를 들어 데비안에서) 시스템dpkg-reconfigure tzdata 의 시간대를 변경하는 데 사용할 수 있지만 사용자 시간대를 변경하는 방법이 궁금합니다 (Linux / Unix가 그러한 아이디어를 전혀 지원하지 않는 경우).

나는 일반적으로 ssh를 통해 원격으로 서버에서 작업하고 서버가 UTC로 내부적으로 작동하고 (파일, ...) 시간대가 다소 피상적이라고 가정하면 연결 위치에 따라 원하는 시간대의 시간을보고 싶습니다. 이게 가능해?


무엇을 시도 했습니까? 웹에서 "TZ 정보를 전달하는 SSH"도 전혀 검색하지 않았습니까?
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에는와 다른 시간과 시간을 제공합니다 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현재를 사용하도록 명령의 별명을 만드 십시오 . 이 줄을 파일에 추가 하십시오.TZssh.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를 다시 시작해야합니다. 우분투에서 "service ssh restart"
cavalcade
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.