Часовий пояс, локаль і мова системи
Як задати часовий пояс, увімкнути синхронізацію часу, налаштувати локаль 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 |
Змініть часовий пояс до того, як налаштуєте завдання резервного копіювання та логування. На робочій машині зміна часового поясу означає перегляд усіх розкладів одразу.