리눅스에서 날짜/시간을 조정하는 방법에는 여러 가지가 있다.
완전 수동 방식: date 명령어로 날짜 시간을 조정하였음.
옛날(?) 방식: ntpdate, rdate 로 time 서버와 시간 동기화.
최신(?) 방식: timedatectl
1. Ubuntu 18.04 에서 timedatectl 사용하기.
전통적인 명령어인 date 명령어로 현재 날짜/시간을 확인 할 수 있다.
$ date Tue Apr 21 10:57:03 KST 2020
하지만, timedatectl 명령으로는 현재 날짜, 시간, 타임존, 타임서버와의 동기화 여부를 모두 확인 가능하다.
$ timedatectl Local time: Tue 2020-04-21 10:57:07 KST Universal time: Tue 2020-04-21 01:57:07 UTC RTC time: n/a Time zone: Asia/Seoul (KST, +0900) System clock synchronized: yes systemd-timesyncd.service active: yes RTC in local TZ: no
timezone 변경을 위해서 timezone을 확인해 보면,
$ timedatectl list-timezones Africa/Abidjan ... Europe/Moscow ... UTC
timezone을 모스코바로 변경해 본다.
$ sudo timedatectl set-timezone Europe/Moscow $ timedatectl Local time: Tue 2020-04-21 05:04:28 MSK Universal time: Tue 2020-04-21 02:04:28 UTC RTC time: n/a Time zone: Europe/Moscow (MSK, +0300) System clock synchronized: yes systemd-timesyncd.service active: yes RTC in local TZ: no
time서버와 날짜 시간 동기화를 하지 않으려면,
$ sudo timedatectl set-ntp false snowffox@web:~$ timedatectl Local time: Tue 2020-04-21 11:11:31 KST Universal time: Tue 2020-04-21 02:11:31 UTC RTC time: n/a Time zone: Asia/Seoul (KST, +0900) System clock synchronized: yes systemd-timesyncd.service active: no RTC in local TZ: no
위에서 systemd-timesyncd.service active 부분이 yes에서 no로 변경된 것이 보인다.
이제 시간/날짜를 변경해 본다.
시간 변경.
$ sudo timedatectl set-time 10:00:00
날짜 변경.
$ sudo timedatectl set-time 2020-04-22
변경후 날짜/시간을 확인해 보면 시스템 시간과도 동기화가 되지 않은것이 보인다.(system clock synchronized)
$ timedatectl Local time: Wed 2020-04-22 00:00:04 KST Universal time: Tue 2020-04-21 15:00:04 UTC RTC time: n/a Time zone: Asia/Seoul (KST, +0900) System clock synchronized: no systemd-timesyncd.service active: no RTC in local TZ: no
날짜/시간 동시 변경도 가능하다.
이제 다시 타임서버와 동기화하면,
$ sudo timedatectl set-ntp true $ timedatectl Local time: Tue 2020-04-21 11:16:02 KST Universal time: Tue 2020-04-21 02:16:02 UTC RTC time: n/a Time zone: Asia/Seoul (KST, +0900) System clock synchronized: yes systemd-timesyncd.service active: yes RTC in local TZ: no
2. CentOS 7 minimal 설치 버전에서 timedatectl
Ubuntu18.04와는 다르게 NTP enabled 항목이 보인다.
CentOS7 timedatectl
# timedatectl Local time: Tue 2020-04-21 11:28:09 KST Universal time: Tue 2020-04-21 02:28:09 UTC RTC time: Tue 2020-04-21 02:28:35 Time zone: Asia/Seoul (KST, +0900) NTP enabled: n/a
타임서버와 동기화하려고하니, 아래와같은 오류가 발생한다.
# timedatectl set-ntp true Failed to set ntp: NTP not supported.
ntpd를 실행했을때,
# systemctl start ntpd Failed to start ntpd.service: Unit not found.
ntpd가 설치되어 있지 않으므로, 설치해준다.
# yum install ntp
/etc/ntp.conf 에 사용할 ntp 서버를 설정한다.(여기서는 time.nist.gov를 최우선순위 time 서버로 설정)
# vi /etc/ntp.conf ... # Please consider joining the pool (http://www.pool.ntp.org/join.html). server time.nist.gov iburst #server 0.centos.pool.ntp.org iburst server 1.centos.pool.ntp.org iburst server 2.centos.pool.ntp.org iburst server 3.centos.pool.ntp.org iburst ...
ntpd 서비스를 실행한다.
# systemctl start ntpd
재부팅시에도 ntpd가 실행되도록 한다.
# systemctl enable ntpd
ntpq 명령으로 시간 동기화를 확인.
# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== time-d-b.nist.g .NIST. 1 u 2 64 1 179.859 -6.168 0.000 send.mx.cdnetwo 216.239.35.8 2 u 1 64 1 3.071 -2.097 0.000
이제, datetimectl 명령으로 확인해 보면, 시간이 동기화 되고 있음을 볼 수 있다.
# timedatectl Local time: Tue 2020-04-21 11:42:12 KST Universal time: Tue 2020-04-21 02:42:12 UTC RTC time: Tue 2020-04-21 02:42:12 Time zone: Asia/Seoul (KST, +0900) NTP enabled: yes NTP synchronized: yes RTC in local TZ: no DST active: n/a
ubuntu 와 centos의 시간 동기화부분이 ubuntu는 systemd-timesyncd.service, centos는 ntp를 사용하는 차이 말고 특별한 차이점은 없어보인다.