Skip to content
VDS · 운영 체제

시간대, 로케일, 시스템 언어

시간대를 설정하고 시간 동기화를 활성화하며 UTF-8 로케일을 구성하는 방법, 그리고 로그와 데이터베이스를 UTC로 유지해야 하는 이유를 알아봐요.

업데이트 2026년 8월 23일

새로 설치한 머신은 보통 UTC로 동작하고 로케일도 최소한만 들어 있습니다. 로그를 읽거나 예약 작업을 돌리지 않는다면 눈치채지 못해요. cron, 이메일, 리포트가 등장하는 순간 시간과 인코딩이 아주 중요해집니다.

시간대

timedatectl
timedatectl list-timezones | grep Moscow
timedatectl set-timezone Europe/Moscow

timedatectl은 로컬 시간, UTC, 동기화 상태를 보여줍니다. System clock synchronized: yes 줄은 시계가 네트워크로 동기화되었다는 뜻이에요.

동기화가 꺼져 있다면:

timedatectl set-ntp true
systemctl status systemd-timesyncd

AlmaLinux와 CentOS Stream에서는 보통 chronyd가 시간을 담당합니다:

systemctl enable --now chronyd
chronyc tracking

로케일

로케일은 메시지 언어, 인코딩, 숫자와 날짜 형식을 결정합니다. 최소 요구 사항은 UTF-8이고, 그렇지 않으면 러시아어 파일 이름과 프로그램 출력이 물음표로 바뀌어요.

Debian과 Ubuntu:

apt install -y locales
dpkg-reconfigure locales
localectl set-locale LANG=ru_RU.UTF-8

AlmaLinux와 CentOS Stream:

dnf install -y glibc-langpack-ru
localectl set-locale LANG=ru_RU.UTF-8

확인:

locale
locale -a | grep -i utf

변경 사항은 새 세션에 적용되니 SSH로 다시 로그인하세요.

콘솔의 키보드 레이아웃

/hosting/vds/m/<id> 패널의 “Console” 탭에 있는 “Screen”(VNC) 화면은 키 입력을 그대로 전달합니다. 여기서 바로 키릴 문자를 입력해야 한다면:

localectl set-keymap ru

서비스에는 필요하지 않아요. UTF-8이면 충분합니다.

UTC로 남겨둘 것

시스템 자체와 데이터베이스는 UTC로 두고, 사람에게만 로컬 시간을 보여주는 게 합리적이에요.

  • UTC 로그는 머신 간에 비교할 수 있고 시계가 바뀌어도 흔들리지 않습니다.
  • UTC 데이터베이스는 간격 계산을 깨뜨리지 않아요.
  • cron은 시스템 시간대로 시간을 계산하니, 시간대를 바꾸면 스케줄도 다시 확인하세요.
systemctl restart cron
crontab -l

흔한 실수

증상원인해결
setlocale: LC_ALL: cannot change locale클라이언트가 자체 로케일을 보내지만 서버에 없음로케일을 생성하거나 클라이언트에서 LANG 전달을 제거
파일 이름의 깨진 문자로케일이 UTF-8이 아님LANG=ru_RU.UTF-8 설정 후 다시 로그인
시간이 몇 분씩 “밀림”동기화가 꺼져 있음timedatectl set-ntp true
작업이 잘못된 시각에 실행됨시간대는 바꿨지만 스케줄은 그대로임crontab 재계산

백업 작업과 로깅을 설정하기 전에 시간대를 바꾸세요. 운영 중인 머신에서 시간대를 바꾸면 모든 스케줄을 한꺼번에 검토해야 합니다.