Часовой пояс, локаль и язык системы
Как выставить часовой пояс, включить синхронизацию времени, настроить локаль UTF-8 и почему логи и базу стоит держать в UTC.
Обновлено 23 августа 2026 г.
Свежая машина обычно живёт в 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.
Раскладка в консоли
Вид «Экран» (VNC) во вкладке «Консоль» панели /hosting/vds/m/<id> передаёт нажатия как есть. Если нужен ввод кириллицы прямо там:
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 |
Меняйте пояс до того, как настроите резервные задачи и логирование. На живой машине смена пояса означает пересмотр всех расписаний разом.