본문 바로가기
컴퓨터/소프트웨어

Linux 날짜와 시간

by 신규하 2007. 12. 12.

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 파일이 존재하지 않는다.


참고 사이트

댓글