[CentOS 7] ntpdate 명령어를 이용하여 NTP 서버와 시간 동기화

2020. 2. 26. 17:27CentOS 7/Basic

반응형

ntpdate 명령어를 이용하여 NTP 서버와 시간 동기화

프로그램을 CentOS 7 서버에 설치할 때, 서버 시간과 실제 시간과의 오차로 인한 오류 현상이 발생되 곤합니다.
이런 오류현상을 방지하기 위해, CentOS 서버의 시간을 NTP 서버(시간 동기화 서버) 시간과 주기적으로 동기화 시킵니다.

rdate, ntpd daemon, ntpdate 등을 이용하여 시간 설정 또는 NTP 서버와의 시간 동기화를 할 수 있습니다.
우리는 이중 ntpdate 명령어를 이용하여 시간을 동기화 시키고, crontab에 그 명령어를 추가하여 주기적으로 시간동기화를 시키도록 할 것입니다.

ntpdate 명령어는 ntpd 데몬이 실행중일 때 사용이 불가능하기 때문에 ntpd 데몬을 종료한 후 사용해야 합니다.

  1. ntpdate 설치
  2. ntpdate 명령어로 ntp서버와 시간동기화
  3. crontab을 이용하여 주기적으로 시간 동기화하기
    3-1) crontab -e 이용
    3-2) /etc/crontab 이용

1. ntpdate 설치

ntpdate 명령어를 yum으로 설치합니다.

yum install -y ntpdate

2. ntpdate 명령어로 ntp서버와 시간 동기화

국내 NTP 서버 목록

  • time.bora.net
  • kr.pool.ntp.org
  • time.nuri.net
  • time.kornet.net

우리나라 ntp 서버 중 하나를 이용하여 시간 동기화를 해봅시다.


sudo ntpdate time.bora.net
26 Feb 15:58:22 ntpdate[12465]: adjust time server 203.248.240.140 offset 0.007116 sec

위와 같이 adjust time server ~~ offset ~ sec 같은 메시지가 출력된다면 정상적으로 동기화 된것입니다.


ntpdate 명령어는 ntp 데몬이 실행중일 때에 사용할 수 없다고 했었는데요, 만약 ntp 데몬이 실행중일 때 ntpdate 명령어를 실행하면 어떤 메시지가 출력될까요?

ntpdate time.bora.net
26 Feb 15:38:27 ntpdate[24639]: the NTP socket is in use, exiting

NTP 소켓은 이미 사용중이라고 나오네요! ntpd 서비스를 종료하고 다시 실행시켜 봅시다.


ntpd 실행중일 때 프로세스 상태

ps -ef | grep ntpd
root      1208 22268  0 15:50 pts/5    00:00:00 grep --color=auto ntpd
ntp      24946     1  0 15:38 ?        00:00:00 /usr/sbin/ntpd -u ntp:ntp -g

ntpd 종료

systemctl stop ntpd
ps -ef | grep ntpd
root     12626 12519  0 16:12 pts/0    00:00:00 grep --color=auto ntpd

3. crontab을 이용하여 주기적으로 시간 동기화하기

리눅스에서 주기적으로 특정 명령어를 실행시키는데에 이용되는 job scheduler로 crontab 기능을 이용합니다.
crontab -e 명령어로 사용자별로 cron을 추가할 수도 있고,
또는 /etc/crontab 파일에 실행할 사용자를 설정하여 cron 을 추가할 수 있습니다.

참고로, ntpdate 명령어는 root 사용자만 실행할 수 있는 명령어 이기 때문에, root 사용자로 로그인 한 후, crontab -e 명령어로 cron 을 추가하거나, /etc/crontab 파일에 root 사용자로 cron을 등록하면 됩니다.


3-1. crontab -e 이용

root 사용자로 로그인 한 후, crontab을 이용하여 cron(스케쥴)을 등록하고, crond 서비스를 재시작합니다.

[root@apple home]# crontab -e

crontab -e 명령어를 이용하 cron을 추가 및 수정할 수 있습니다.
분 시 일 월 요일 명령어 순으로 작성합니다.

0 5 * * * ntpdate time.bora.net

매일 오전 5시마다 ntpdate time.bora.net 명령어를 실행


systemctl restart crond

crontab을 수정한 후, 변경사항을 적용하기 위해 crond 서비스를 재시작합니다.
(CentOS 7.0 미만 버전의 경우 service crond restart)

※ 참고로, crontab -l 명령어를 실행하면 사용자가 등록한 cron 목록을 확인할 수 있습니다.


3-2) /etc/crontab 이용

sudo vim /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# *  *  *  *  * user-name  command to be executed
0 5 * * * root ntpdate time.bora.net

/etc/crontab 파일의 맨하단에 cron을 추가합니다.
crontab -l 로 등록하던 방법과 차이점은, 명령어 앞에 사용자이름을 작성하는 것입니다.
ntpdate 명령어는 root 사용자만 이용할 수 있는 명령어이기 때문에 root 사용자를 설정해줍니다.

sudo systemctl restart crond

crontab 파일을 수정한 후, crond 서비스를 재시작해줍니다.


+++

  • ntpdate 명령어를 이용하여 time서버와 시간 동기화
  • ntpdate 명령어를 이용하여 ntp 서버와 시간 동기화
  • 인터넷 시간 서버와 동기화
  • 시간동기화 서버와 time 동기화
728x90
반응형