Linux의 시간대 설정 [닫기]


157

zoneinfo 파일을에 복사하여 Linux 시스템에서 시간대를 GMT + 6으로 설정하고 /etc/localtime있지만 date명령에 여전히 시간이 표시됩니다 UTCtime-6. 누구든지이 동작을 설명 할 수 있습니까?

date명령에 UTCtime+6시간 이 표시되어야 한다고 가정합니다 . 내가 따르는 단계는 다음과 같습니다.

date
Wed Jan 22 17:29:01 IST 2014

date -u
Wed Jan 22 11:59:01 UTC 2014

cp /usr/share/zoneinfo/Etc/GMT+6 /etc/localtime

date
Wed Jan 22 05:59:21 GMT+6 2014

date -u
Wed Jan 22 11:59:01 UTC 2014

TZ 환경 변수가 설정 echo $TZ되었습니까 (빈 줄 이외의 것을 생성합니까)? 또한 /etc/localtime실제 파일을 복사하는 대신에 심볼릭 링크를 만드는 것이 좋습니다 (zoneinfo 데이터가 절대 변경되지 않을 가능성이있는 경우 안전합니다).
Sami Laine

배포판은 무엇입니까? 다른 배포판은 이것을 다르게 처리합니다!
slm

@slm : 우분투 12.04를 사용하고 있습니다
Rahul Dhobi

이 정책을 몰랐을 수도 있지만 다른 SE 사이트에 동일한 Q를 교차 게시한다고 가정하지는 않습니다. stackoverflow.com/questions/21282367/timezone-setting-in-linux
slm

2
"이 질문은 여러 사이트에 게시되었습니다"허, 그것은 저에게 새로운 질문입니다. 그런 근거가있는 SE 사이트를 본 적이 없습니다. 어쨌든, 이것은 Linux에서 시간대를 변경하는 방법을 검색 할 때 Google에 나타나는 첫 번째 질문이며, 내가 본 모든 시간대 중에서 가장 투표가 많은 질문이므로 다시 열어야합니까?
Ajedi32

답변:


272

이 블로그 게시물 제목 : 사용법 : 2 Linux에서 TimeZone을 변경하는 방법 .

레드햇 배포

Red Hat과 같은 배포판을 사용하는 경우 파일을 복사하는 방법이 대부분 허용됩니다.

참고 : 배포에 구애받지 않는 솔루션을 찾고 있다면 데비안에서도 작동하지만 데비안 머신에만 관심이 있으면 아래에 더 간단한 방법이 있습니다.

$ ls /usr/share/zoneinfo/
Africa/      CET          Etc/         Hongkong     Kwajalein    Pacific/     ROK          zone.tab
America/     Chile/       Europe/      HST          Libya        Poland       Singapore    Zulu
Antarctica/  CST6CDT      GB           Iceland      MET          Portugal     Turkey       
Arctic/      Cuba         GB-Eire      Indian/      Mexico/      posix/       UCT          
Asia/        EET          GMT          Iran         MST          posixrules   Universal    
Atlantic/    Egypt        GMT0         iso3166.tab  MST7MDT      PRC          US/          
Australia/   Eire         GMT-0        Israel       Navajo       PST8PDT      UTC          
Brazil/      EST          GMT+0        Jamaica      NZ           right/       WET          
Canada/      EST5EDT      Greenwich    Japan        NZ-CHAT      ROC          W-SU         

그러나 복사하는 것이 아니라 연결하는 것이 좋습니다.

$ sudo unlink /etc/localtime 
$ sudo ln -s /usr/share/zoneinfo/Etc/GMT+6 /etc/localtime

이제 날짜는 다른 시간대를 보여줍니다.

$ date -u
Thu Jan 23 05:40:31 UTC 2014

$ date 
Wed Jan 22 23:40:38 GMT+6 2014

우분투 / 데비안 배포판

이 배포판 중 하나에서 시간대를 변경하려면이 명령을 사용할 수 있습니다.

$ sudo dpkg-reconfigure tzdata

    ss # 1

$ sudo dpkg-reconfigure tzdata

Current default time zone: 'Etc/GMT-6'
Local time is now:      Thu Jan 23 11:52:16 GMT-6 2014.
Universal Time is now:  Thu Jan 23 05:52:16 UTC 2014.

이제 확인하면 :

$ date -u
Thu Jan 23 05:53:32 UTC 2014

$ date 
Thu Jan 23 11:53:33 GMT-6 2014

참고 : Ubuntu 14.04 이상에는 단일 명령 으로이 옵션이 있습니다 (출처 : Ask Ubuntu- 터미널에서 시간대 설정 ) :

$ sudo timedatectl set-timezone Etc/GMT-6

"Etc / GMT + 6"사용시

SO에 대한 @MattJohnson의 답변에서 발췌

Etc/GMT+6POSIX 표준과의 호환성을 위해 의도적으로 같은 영역 이 역전됩니다. 이 파일 의 주석을 참조하십시오 .

이 영역을 사용할 필요는 거의 없습니다. 대신 이름이 America/New_York있거나 시간대 Europe/London에 맞는 이름을 가진 시간대를 사용해야합니다 . 여기 의 목록을 참조 하십시오 .


1
이 질문에 대한 답변은 여기를 참조하십시오. stackoverflow.com/questions/21282367/timezone-setting-in-linux
Rahul Dhobi

@ user3184706-여기 엉망이되었습니다. 귀하의 Q는 시간대를 변경하는 방법이었습니다. GMT .. 시간대를 사용하는 것에 관한 약간의 시간은 SO A가 제공 한 것이 정확하지 않지만, 나는 당신이 정말로 그것에 대해 묻지 않았기 때문에 여기에 포함시키지 않았습니다. 이 비트를이 A에 추가하거나 여기에 해당 정보를 자신의 A로 복사 / 붙여 넣기 할 수 있습니다.
slm

@ user3184706-이것을 정리하고 정리하기 위해 매트에 A를 포함시켜 완성했습니다.
slm

1
컨테이너에 있다면 우분투에서 패키지를 설치해야합니다. tzdata그렇지 않으면 파일 /usr/share/zoneinfo이 존재하지 않습니다.
Elliott Slaughter

1
timedatectlSLES 12에서도 작동합니다 .
Alexander Malakhov

24

이것이 우분투에서하는 방법입니다. Asia/Tokyo자신의 시간대로 바꾸 십시오.

echo 'Asia/Tokyo' | sudo tee /etc/timezone

sudo dpkg-reconfigure -f noninteractive tzdata

버그tzdata특정 값을 정규화 리스팅 : dpkg-reconfigure:

echo 'US/Central' >/etc/timezone
dpkg-reconfigure -f noninteractive tzdata
# Current default time zone: 'America/Chicago'

echo 'US/Eastern' >/etc/timezone
apt-get install --reinstall tzdata
# Current default time zone: 'America/New_York'

이것은 또한 작동하지만, 데비안 / 우분투, SLM의 대답은 (오타의 기회는) 아마 쉽고 덜 위험하지 않습니다
안드레아스 하트만에게

17

tzselect 명령은 원하는 것을 수행하도록 만들어졌습니다.


1
그리고 TZ변수를 지역 시간대로 설정하는 단일 행으로 압축합니다 ( 예 : America / Los_Angeles-) export TZ=`printf "2\n49\n21\n1\n" | tzselect 2>&1 | tail -1` . 이 줄을 .profile , as tzselect` 에 넣으면 프롬프트에서 실행했을 때 도움이 될 것입니다.
sameers
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.