검색 엔진의 방문이 늘어나고 있군...

Posted
Filed under 프로그램과 명령어/관리와 유지보수
참조 원문 : Clock management on Linux

  리눅스에서 네트워크를 기반으로 시간을 동기화하는 NTP(Network Time Protocol)에 대한 내용입니다. 시간을 동기화하는 것은 생각보다 중요한 일입니다. 시간이 잘못 설정되면 cron에 걸린 스케쥴이 엉뚱한 시간에 돌아갈 수 있고 시스템의 시간차를 이용한 해킹의 대상이 될 수도 있습니다. 참고로 NTP는 UTC(Coordinated Universal Time)에 대한 정보만 제공할 뿐 타임 존이나 서머타임(Daylight Saving Time)에 대한 정보는 제공하지 않습니다.


NTPDATE
  ntpdate는 NTP 서버로부터 날짜와 시간을 가져와 동기화시키는 프로그램입니다. 루트 권한으로 아래의 방식으로 시스템의 시간을 동기화할 수 있습니다.
mirashi@myservlab:~$ sudo ntpdate time.bora.net
[sudo] password for mirashi:
22 Nov 15:15:50 ntpdate[27392]: step time server 203.248.240.140 offset 126.209753 sec


NTPD
  ntpd는 시스템 시간을 인터넷 표준 시간 서버와 동기화하여 시간 설정을 올바르게 유지하는 데몬입니다. 일반적으로 /etc/ntp.conf 파일을 설정 파일로 사용합니다. 우분투의 경우 아래의 명령어를 통해 ntpd를 설치할 수 있습니다.
mirashi@myservlab:~$ aptitude install ntp
  설정 파일에서 server 파라미터는 사용할 타임 서버를 지정하는데 쓰입니다.
server time.bora.net
  driftfile 파라미터는 시스템 시계가 UTC와 싱크하는데 사용할 주파수(frequency correction)가 담긴 파일을 지정하는 파라미터입니다. 지정 후 ntpd 데몬을 재시작하면 동기화 작업 시간을 최소화할 수 있습니다. 지정한 파일에 값이 있을 경우 해당 값을 Initial Correction Frequency 값으로 사용하고 없을 경우 디폴트 값으로 0을 사용합니다.
driftfile /var/lib/ntp/ntp.drift
  자신의 시스템에 ntpd가 실행되고 있는지 확인하고 싶다면 아래의 명령어를 사용하면 됩니다.
mirashi@myservlab:~$ ntpq -p
     remote          refid       st t when poll reach delay offset jitter
==============================================================================
 time.bora.net   90.1.14.51      2  u  2    64    1   10.114 52.834 0.001
  지금까지의 내용을 보고 "cron과 ntpdate만 사용하면 ntpd를 쓸 필요가 없겠네"라고 생각할 수 있지만 ntpd는 최소의 자원만 사용하면서 정확성과 신뢰성을 극대화하는 정교한 알고리즘을 사용하기 때문에 ntpd가 훨씬 더 좋은 대안이라고 할 수 있습니다.


HWCLOCK
  hwclock은 RTC(Real Time Clock)이나 CMOS Clock이라고 불리는 하드웨어 시간을 설정하거나 그 시간을 가져와 시스템에 적용하는데 사용하는 프로그램으로 대부분의 리눅스에서 사용합니다.

  아래의 명령어를 통해 컴퓨터에 설정된 하드웨어 시간을 볼 수 있습니다.
mirashi@myservlab:~$ sudo hwclock -r
Mon 22 Nov 2010 07:04:49 AM KST  -0.299531 seconds
  --systohc 옵션을 사용하면 시스템 시간을 하드웨어 시간에 덮어씌울 수 있습니다. 이를 이용해 아래의 명령어로 타임 서버에서 시간을 가져와 시스템 시간과 하드웨어 시간에 적용할 수 있습니다.
ntpdate pool.ntp.org && hwclock --systohc


2010/11/22 15:06 2010/11/22 15:06