Как изменить часовой пояс в Linux из командной строки
Если вы переехали или путешествуете с ноутбуком на Linux, полезно знать, как изменить системный часовой пояс. Это можно сделать из командной строки несколькими способами. Ниже — понятные шаги, варианты и рекомендации для десктопа, серверов и контейнеров.
Как посмотреть список часовых поясов с помощью tzselect
В Linux часовые пояса управляются базой Time Zone Database (tzdata). База обновляется при изменениях политик и используется большинством систем. Чтобы найти правильное имя часового пояса (например, America/Los_Angeles), удобно использовать tzselect — меню в терминале, которое подскажет точное имя.
Запустите в shell:
tzselectМеню предложит выбрать континент, страну и, при необходимости, регион или город. В конце утилита покажет строку для установки переменной окружения TZ.
Важно: tzselect не меняет системный часовой пояс автоматически. Она только помогает найти имя, которое потом можно применить.
Установка часового пояса через переменную окружения TZ
Для временной смены часового пояса в текущей сессии можно экспортировать переменную TZ. Это удобно для тестов или отдельных приложений.
Пример (Pacific Time):
export TZ="America/Los_Angeles"После этого date и другие утилиты отобразят локальное время в указанном поясе только для вашей текущей сессии. Чтобы сделать изменение постоянным для пользователя, добавьте строку в ~/.bashrc, ~/.profile или ~/.zshrc.
Примечание: переменная TZ влияет только на процессы текущего пользователя или дочерние процессы, не меняя системного времени для всех пользователей.
Системная настройка через /etc/timezone и /etc/localtime
Для глобальной смены часового пояса используют файлы /etc/timezone и /etc/localtime. Поведение зависит от дистрибутива.
Debian/Ubuntu
- /etc/timezone обычно содержит текстовое имя часового пояса. Его можно отредактировать с правами root:
sudo vim /etc/timezone- Затем обычно выполняют пересборку настроек через dpkg-reconfigure tzdata (если требуется):
sudo dpkg-reconfigure tzdataДругие дистрибутивы и /etc/localtime
- /etc/localtime — двоенный файл или символическая ссылка на файл в /usr/share/zoneinfo.
- Самый надёжный способ — создать символическую ссылку на нужный файл zoneinfo и перезапустить сервисы, если нужно:
sudo ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime- Опция -f перезапишет существующую ссылку.
Важно: укажите корректный путь внутри /usr/share/zoneinfo. Файлы там имеют имена в формате Continent/City.
Альтернатива для systemd: timedatectl
На системах с systemd предпочтительнее использовать timedatectl. Это единый инструмент для просмотра и установки времени и часового пояса.
Посмотреть текущие настройки:
timedatectl statusУстановить часовой пояс:
sudo timedatectl set-timezone America/Los_Angelestimedatectl автоматически обновит /etc/localtime и уведомит systemd-таймдевисы. Это безопасный метод на современных дистрибутивах.
Чек-лист перед изменением часового пояса
- Убедитесь, что в системе установлена tzdata: sudo apt install tzdata или эквивалент.
- Найдите правильное имя зоны через tzselect или ls /usr/share/zoneinfo.
- Для системного изменения имейте права root.
- Если используете systemd, предпочтите timedatectl.
- Перезапустите службы, которые кэшируют время (cron, systemd-тимеры, базы данных). Проверяйте логи.
Ролевые чек-листы
Для простого пользователя:
- Сохраните рабочие файлы.
- Временная смена: export TZ=… или изменить настройки окружения.
- Полный выход/вход в сессию для применения.
Для администратора сервера:
- Проверить влияние на планировщики задач и резервное копирование.
- Использовать timedatectl или ln -sf /usr/share/zoneinfo/… /etc/localtime.
- Проверить службы: cron, systemd timers, PostgreSQL, схему логов.
Для разработчика в контейнере:
- Контейнеры часто используют часовой пояс хоста. Для отдельного пояса монтируйте /etc/localtime или задавайте TZ в Dockerfile/compose:
Dockerfile:
ENV TZ=America/Los_Angeles
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezoneDocker Compose:
environment:
- TZ=America/Los_Angeles
volumes:
- /etc/localtime:/etc/localtime:roКогда способ может не сработать
- В контейнерах без монтирования /usr/share/zoneinfo или /etc/localtime изменение /etc/timezone не даст эффекта.
- Если tzdata не установлена, ни /usr/share/zoneinfo, ни tzselect не будут доступны.
- На системах без systemd timedatectl отсутствует.
- Программы, которые хранят расписания в UTC, не поменяют своё поведение от локального часового пояса.
Быстрый список команд (cheat sheet)
# Найти имя зоны через tzselect
tzselect
# Посмотреть доступные зоны
ls /usr/share/zoneinfo
# Временная смена для текущей сессии
export TZ="Europe/Moscow"
# Системная смена через ln (универсально)
sudo ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
# Debian/Ubuntu: изменить текстовый файл и перегенерировать
sudo vim /etc/timezone
sudo dpkg-reconfigure tzdata
# systemd: рекомендуемый способ
sudo timedatectl set-timezone Europe/Moscow
# Проверить текущее время
dateКритерии приёмки
- date в консоли показывает ожидаемое локальное время.
- Системные службы (cron, systemd timers) выполняются по графику в новом поясе.
- Логи и метки времени отображаются корректно после перезапуска зависимых сервисов.
Короткий глоссарий
- tzdata — база географических описаний часовых поясов.
- /usr/share/zoneinfo — каталог с бинарными файлами зон.
- /etc/localtime — локальное представление текущего часового пояса.
- TZ — переменная окружения, задающая локальный часовой пояс для процессов.
- timedatectl — утилита systemd для управления временем и часовым поясом.
Краткое руководство по откату
Если после изменения появилась ошибка или неожиданный сдвиг времени, верните предыдущую ссылку или установите UTC:
sudo ln -sf /usr/share/zoneinfo/UTC /etc/localtime
sudo timedatectl set-timezone UTCПосле отката проверьте службы и логи.
Заключение
Сменить часовой пояс в Linux просто. Для одноразовых или пользовательских нужд используйте переменную TZ. Для системных изменений предпочтительнее timedatectl на systemd-системах или корректная настройка /etc/localtime на других дистрибутивах. Не забудьте проверить службы и контейнеры — они могут требовать отдельных действий.
Важно: всегда проверяйте, что в системе установлена актуальная версия tzdata, особенно при переезде в регион с недавними политическими изменениями часов.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone