2017년 8월 22일 화요일

time UTC에서 KST 로 변경

리눅스 시스템을 서버로 사용할 경우는 시간 관리가 아주 중요한데, 대한민국 표준시로 설정되어있지 않으면 로그 관리 등에서 문제가 있으므로 최초 설치시에 Timezone을 제대로 설정하지 않으면 나중에 시간이 정확히 표시되지 않는다. 물론 date -s 명령을 이용해 수동으로 설정할수 있지만 시간 동기화를 위해 rdate 명령을 내리면 그리니치 평균시로 돌아가버리고 만다. tzselect 명령을 이용하거나 /etc/sysconfig/clock 파일에 ZONE="Asia/Seoul" 라고 수정을 하면 적용이 될 것 같았지만, 재부팅을 해도 시스템 시간에 변화가 없었다.

그래서 찾은 방법이 환경 변수를 이용하는 것이다.

[root@Zeus ~]# date
Fri Aug 3 08:05:03 UTC 2007
[root@Zeus ~]# hwclock --show
Fri 03 Aug 2007 05:39:07 PM UTC -0.870183 seconds
[root@Zeus ~]# echo $TZ

[root@Zeus ~]# export env TZ=KST-09:00:00
[root@Zeus ~]# date
Fri Aug 3 17:05:45 KST 2007

위에 GMT(UTC)가 아닌 KST라고 썼는데, 이것은 date 명령에서 나오는 문자열에 불과하며, 실제 영향을 주는 부분은 -09:00:00 이다. +, -는 그리니치 천문대를 중심으로 서쪽은
+, 동쪽은 - 이고, 우리나라는 동쪽에 있으며 9시간이 빠르므로 -09:00:00 가 되는 것이다.

또, PC의 시간은 하드웨어 시간(RTC)과 시스템 시간이 있는데, RTC는 환경에 따라 오차가 생길수 있으며, 리눅스 시스템은 최초 부팅 시 RTC와 동기화를 한 뒤로는 자체 타이머를 이용해 시간을 관리하므로 매우 정확하다고 할 수 있다. RTC의 오차라는 것도 심한게 아니기 때문에 굳이 시스템 시간으로 RTC를 동기화 할 필요는 없으나 한번쯤은 해두는 것이 좋다.

[root@Zeus ~]# date
Fri Aug 3 18:05:21 KST 2007
[root@Zeus ~]# hwclock --show
Fri 03 Aug 2007 06:39:45 PM KST -0.540050 seconds
[root@Zeus ~]# rdate -s time.bora.net
[root@Zeus ~]# hwclock --systohc
[root@Zeus ~]# date
Fri Aug 3 18:06:56 KST 2007
[root@Zeus ~]# hwclock --show
Fri 03 Aug 2007 06:07:01 PM KST -0.211481 seconds

설정 후에는 /etc/rc.d/rc.local 파일의 마지막 부분에 아래 내용을 추가해서 부팅시 적용이 되도록 하자.

export env TZ=KST-09:00:00
rdate -s time.bora.net
hwclock --systohc


거두 절미하고 전체 시스템 timezone 변경은 
rm /etc/localtimeln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime 

댓글 없음: