티스토리 뷰

컴퓨터/소프트웨어

Linux 날짜와 시간

신규하 2007. 12. 12. 11:13

Linux 날짜와 시간

리눅스의 날짜와 시간

리눅스를 크게 두개의 시계를 가지고 있다고 보면 된다. 하나는 하드웨어 시계(바이오스 시계,CMOS시계라도 한다.) 이것은 메인보드에 내장 타이머에 의해 구동된다. 또 다른 하나는 시스템 시계라고 부른다. 이것은 커널에서 timer 인터럽트에 의해 구동된다. 보통 부팅을 하면 커널은 하드웨어 시간을 가져와서 시간대와 써머타임 등의 설정을 적용해 시스템 시간을 설정한다. 즉 하드웨어 시계는 부팅 주로 쓰인다고 생각하면 편하다.

그리고, 여기서 하드웨어 시계는 오차가 있다. 전자 시계라고 해도 오차가 생기는 것과 마찬가지로 오차가 생기는데, CLOCK_SYSTOHC=“yes”로 설정 했을 경우 리눅스는 이 시간을 알아서 이 오차를 /etc/adjtime이라는 파일에 써 놓고 /sbin/hwclock 프로그램으로 부팅하거나 시스템 종료시에 시간을 조정해 준다.


날짜와 시간 바꾸기

date 명령어는 날짜와 시간을 바꾸고 볼 수 있다.

# date
2007. 12. 12. (수) 09:15:41 KST

date명령어로 시간을 바꾸려면 date명령어 뒤에 월,일,시간,분, 년 순서로 숫자로 공백없이 써 줘야 한다. 2007년 12월 25일 12시로 맞추려면 다음과 같이 하면 된다.

# date 122512002003
2003. 12. 25. (목) 12:00:00 KST

시스템 UTC 시간으로 하드웨어 시간을 설정하는 방법은 다음과 같다.

# hwclock --utc --systohc

hwclock 명령어에서–utc 옵션을 빼거나 –localtime 옵션을 더해주면, localtime으로 하드웨어 시간을 설정한다.

# hwclock --localtime --systohc

하드웨어 시간을 설정해 시스템 시간으로 설정하는 방법은 아래와 같다.

#date
2007. 12. 12. (수) 10:16:35 KST
# hwclock --show
2007년 12월 12일 (수) 오전 10시 18분 36초 -0.766343 seconds
# hwclock --set --date="12/25/2007 12:00:00"
# hwclock --show
2007년 12월 25일 (화) 오후 12시 00분 08초 -0.266116 seconds
# date
2007. 12. 12. (수) 10:20:00 KST
# hwclock --hctosys
# date
2007. 12. 25. (화) 12:00:28 KST


NTP(Network Time Protocal) 사용하기

NTP는 컴퓨터의 시스템의 시간을 네트웍으로 설정하는 프로토콜이다. NTP는 UDP 123포트를 사용한다.
ntp를 사용 하는 프로그램은 리눅스에 패키지에는 기본적으로 포함되어 있다. 혹시 필요하다면, http://www.ntp.org/downloads.html 에 가면 프로그램을 다운로드 받을 수 있다.

ntpdate의 사용방법은 아래와 같다.

# ntpdate time.nist.gov && hwclock -w
12 Dec 10:40:21 ntpdate[28106]: adjust time server 128.138.140.44 offset 0.166877 sec
hwclock에서 -w옵션은 –systohc와 같은 옵션이다.

공개된 ntp서버를 찾고 싶으면 http://support.ntp.org/bin/view/Servers/WebHome 주소를 방문해 본다.

rdate명령어로도 설정 할 수 있다.

혹시, ntpdate를 사용 했을 때 아래와 같은 오류가 발생할 경우가 있다.

Error : Servname not supported for ai_socktype

이를때는 아래와 같이 services에 ntp를 추가해 준다.

# echo "ntp 123/udp" >> /etc/services


Time zone 설정

tzselect 명령어로 사용하기

# tzselect

이 명령어를 사용하면 지역 설정을 간단하게 번호 누르기로 설정 할 수 있다.

/etc/localtime 파일을 해당 지역으로 변경하기

/usr/share/zoneinfo에 있는 해당 지역 파일 찾아서 /etc/localtime으로 복사 하거나 링크를 해서 사용한다.
/etc에 있는 localtime을 링크를 하면 시간대가 변경 된 것을 볼 수 있다.

# date
2007. 12. 12. (수) 02:10:14 UTC
# ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
# date
2007. 12. 12. (수) 11:10:27 KST
언어가 UTC로 되어 있을 경우에는 /etc/localtime 파일이 존재하지 않는다.


참고 사이트

댓글
댓글쓰기 폼