Ubuntu 22.04 서버 시간 맞추기 — 타임존 설정과 시각 동기화(rdate)
서버 시간이 실제랑 안 맞아서 맞춰야 했음. 근데 ’시간 맞추기’엔 성격이 다른 두 개가 섞여 있음. 이걸 구분 안 하면 rdate로 동기화했는데도 시간이 9시간씩 어긋나 보이는 일이 생김.
타임존과 시각 동기화
- 타임존(시간대) — 어느 지역 기준으로 시간을 표시할지. 한국이면
Asia/Seoul(UTC+9).timedatectl로 설정함. - 시각 동기화 — 시스템 시계 값 자체를 정확한 기준 시각에 맞추는 거.
rdate,systemd-timesyncd,chrony이런 것들.
rdate는 시각 동기화 도구임. 타임존은 안 바꿔줌. 그래서 서버를 한국 시간에 제대로 맞추려면 둘 다 건드려야 함.
1. OS 및 현재 상태 확인
cat /etc/os-release
# PRETTY_NAME="Ubuntu 22.04.4 LTS"
현재 시간 상태는 timedatectl로 한 번에 볼 수 있음. Time zone, System clock synchronized, NTP service 항목 확인.
timedatectl
2. 타임존을 한국으로 설정
sudo timedatectl set-timezone Asia/Seoul
date로 확인하면 시간대가 KST로 바뀜.
date
# Fri Sep 27 15:24:00 KST 2024
3. rdate로 시각 동기화
시계 값 자체를 시간 서버에 맞춤.
sudo apt install rdate
sudo rdate -s time.bora.net
time.bora.net— 국내 시간 서버.-s— 조회한 시각으로 시스템 시계를 조용히 설정(set).
적용됐는지 확인.
date
4. 크론으로 주기 동기화
시스템 시계는 조금씩 밀림(드리프트). 한 번 맞추고 끝내는 것보다 크론에 등록해서 주기적으로 맞추는 게 나음.
sudo crontab -e
# 매일 새벽 4시에 시각 동기화
0 4 * * * /usr/sbin/rdate -s time.bora.net
크론은 PATH가 제한적이라 명령을 절대경로로 써야 함. rdate 위치는 이렇게 확인.
which rdate
# /usr/sbin/rdate (환경에 따라 /usr/bin/rdate 일 수 있다)
참고: 요즘 방식 (systemd-timesyncd / chrony)
Ubuntu 22.04엔 기본으로 systemd-timesyncd가 들어 있어서 NTP 자동 동기화가 됨. rdate + 크론 대신 이거 켜면 크론 등록 없이 백그라운드에서 계속 맞춰줌.
sudo timedatectl set-ntp true
timedatectl # System clock synchronized: yes / NTP service: active 확인
더 정밀하게 하려면 chrony 깔아서 NTP 서버 직접 지정하는 방법도 있음. 그래도 rdate는 단순하고 직관적이라 ’한 번 확 맞추고 크론으로 유지’용으로는 아직 쓸 만함.
정리
- 타임존은
timedatectl set-timezone Asia/Seoul, 시각 동기화는rdate(또는 timesyncd·chrony) — 둘은 별개. - rdate만으로는 표시 시간대 안 바뀜. 타임존도 같이 설정해야 한국 시간으로 보임.
- 드리프트 대비로 크론에 절대경로로 등록해두면 시각 유지됨.