Гид по технологиям

Как изменить часовой пояс в Linux из командной строки

4 min read Linux Обновлено 07 Jan 2026
Как изменить часовой пояс в Linux
Как изменить часовой пояс в Linux

Аналоговые часы с разными часовыми поясами

Если вы переехали или путешествуете с ноутбуком на Linux, полезно знать, как изменить системный часовой пояс. Это можно сделать из командной строки несколькими способами. Ниже — понятные шаги, варианты и рекомендации для десктопа, серверов и контейнеров.

Как посмотреть список часовых поясов с помощью tzselect

Выбор континента в tzselect

В Linux часовые пояса управляются базой Time Zone Database (tzdata). База обновляется при изменениях политик и используется большинством систем. Чтобы найти правильное имя часового пояса (например, America/Los_Angeles), удобно использовать tzselect — меню в терминале, которое подскажет точное имя.

Запустите в shell:

tzselect

Меню предложит выбрать континент, страну и, при необходимости, регион или город. В конце утилита покажет строку для установки переменной окружения TZ.

Важно: tzselect не меняет системный часовой пояс автоматически. Она только помогает найти имя, которое потом можно применить.

Установка часового пояса через переменную окружения TZ

Переменная окружения TZ в командной строке Linux

Для временной смены часового пояса в текущей сессии можно экспортировать переменную TZ. Это удобно для тестов или отдельных приложений.

Пример (Pacific Time):

export TZ="America/Los_Angeles"

После этого date и другие утилиты отобразят локальное время в указанном поясе только для вашей текущей сессии. Чтобы сделать изменение постоянным для пользователя, добавьте строку в ~/.bashrc, ~/.profile или ~/.zshrc.

Примечание: переменная TZ влияет только на процессы текущего пользователя или дочерние процессы, не меняя системного времени для всех пользователей.

Системная настройка через /etc/timezone и /etc/localtime

Символическая ссылка /etc/localtime на файл zoneinfo

Для глобальной смены часового пояса используют файлы /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_Angeles

timedatectl автоматически обновит /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/timezone

Docker 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, особенно при переезде в регион с недавними политическими изменениями часов.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство