Daeho's Dev Blog

Ubuntu 22.04 서버 시간 맞추기 — 타임존 설정과 시각 동기화(rdate)

#Linux#Ubuntu#rdate#cron

서버 시간이 실제랑 안 맞아서 맞춰야 했음. 근데 ’시간 맞추기’엔 성격이 다른 두 개가 섞여 있음. 이걸 구분 안 하면 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만으로는 표시 시간대 안 바뀜. 타임존도 같이 설정해야 한국 시간으로 보임.
  • 드리프트 대비로 크론에 절대경로로 등록해두면 시각 유지됨.