Настройка времени и часового пояса Ubuntu | Пошаговая инструкция | AdminWiki

Установка времени на Ubuntu: полное руководство для разработчиков и админов

18 декабря 2025 8 мин. чтения #linux #ntp #sysadmin #systemd #timedatectl #ubuntu #время ubuntu #часовой пояс
Содержание статьи

Представь, что твой сервер Ubuntu показывает неправильное время. Логи сбиты, cron-задачи выполняются не тогда, когда нужно, а SSL-сертификаты жалуются на рассинхронизацию. Знакомая ситуация? Давай разберем, как правильно настроить время на Ubuntu — от базовой установки часового пояса до тонкой настройки NTP-синхронизации.

Проверка текущего состояния времени

Перед тем как что-то менять, давай посмотрим, что у нас сейчас. Основная команда для работы со временем в современных Ubuntu (с systemd) — timedatectl.

bash
timedatectl status

Ты увидишь примерно такой вывод:

bash
               Local time: Tue 2024-12-24 14:30:00 UTC
           Universal time: Tue 2024-12-24 14:30:00 UTC
                 RTC time: Tue 2024-12-24 14:30:00
                Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
Обрати внимание на ключевые поля: Local time (локальное время), Time zone (часовой пояс) и System clock synchronized (синхронизированы ли часы с NTP).

Настройка часового пояса в Ubuntu

Самый частый сценарий — сервер стоит в UTC, а тебе нужно московское время. Вот как это сделать.

1. Просмотр доступных часовых поясов

bash
timedatectl list-timezones | grep -i moscow

Или для поиска по Европе:

bash
timedatectl list-timezones | grep Europe

2. Установка часового пояса

Допустим, нам нужен пояс Europe/Moscow:

bash
sudo timedatectl set-timezone Europe/Moscow

Проверяем:

bash
timedatectl | grep "Time zone"
Важно! Изменение часового пояса не меняет само время (значения часов и минут), только смещение относительно UTC. Время на системных часах останется прежним, но отображаться будет с учетом нового пояса.

Ручная установка даты и времени

Иногда нужно выставить время вручную (например, на изолированном сервере без интернета). Используй команду timedatectl set-time.

Установка конкретной даты и времени

bash
sudo timedatectl set-time "2024-12-24 15:30:00"

Формат строгий: ГГГГ-ММ-ДД ЧЧ:ММ:СС. После выполнения проверь:

bash
date

Настройка синхронизации времени через NTP

Для точного времени нужна синхронизация с интернет-серверами. В Ubuntu за это отвечает systemd-timesyncd (или chrony в более тонких настройках).

1. Включение и проверка NTP

bash
sudo timedatectl set-ntp true
timedatectl status | grep -E "synchronized|NTP"

2. Просмотр информации о синхронизации

bash
timedatectl timesync-status

3. Настройка своих NTP-серверов (опционально)

Редактируем конфиг timesyncd:

bash
sudo nano /etc/systemd/timesyncd.conf

Раскомментируй и измени строки:

config
[Time]
NTP=ntp1.stratum1.ru ntp2.stratum1.ru
FallbackNTP=ntp.ubuntu.com

Применяем изменения:

bash
sudo systemctl restart systemd-timesyncd
sudo systemctl status systemd-timesyncd

Работа с аппаратными часами (RTC)

Аппаратные часы (Real Time Clock) сохраняют время при выключении питания. Важный момент — в каком формате они хранят время: UTC или локальном.

bash
# Проверка текущего состояния
sudo hwclock --show

# Синхронизация системного времени с аппаратным
sudo hwclock --systohc

# Синхронизация аппаратного времени с системным
sudo hwclock --hctosys

Узнать, настроены ли RTC на локальное время:

bash
timedatectl | grep "RTC in local TZ"
Рекомендация: Всегда храни RTC в UTC. Это избавит от проблем при смене часового пояса или переходе на летнее время. Команда для переключения: sudo timedatectl set-local-rtc 0

Сравнение методов управления временем

Метод Команда/Утилита Когда использовать Преимущества
Systemd (рекомендуется) timedatectl Ubuntu 16.04 и новее Единый интерфейс, простота
Классический способ date, hwclock Старые системы, скрипты Полный контроль, обратная совместимость
Расширенная NTP chrony Сервера точного времени Точность, работа в оффлайн-режиме
Графический интерфейс Settings → Date & Time Desktop-версия Ubuntu Удобно для новичков

Частые проблемы и их решение

1. Время сбивается после перезагрузки

Скорее всего, проблема в RTC. Проверь и исправь:

bash
# Проверяем текущее время RTC
sudo hwclock --show

# Устанавливаем правильное время в RTC из системных часов
sudo hwclock --systohc

# Убеждаемся, что RTC использует UTC
sudo timedatectl set-local-rtc 0

2. Расхождение между системным временем и временем в логах

Если в /var/log время отличается, проверь часовой пояс для службы журналирования:

bash
# Для rsyslog
sudo nano /etc/rsyslog.conf
# Добавь или измени: $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

3. NTP не синхронизируется

Попробуй перезапустить службу и посмотреть логи:

bash
sudo systemctl restart systemd-timesyncd
sudo journalctl -u systemd-timesyncd -n 50

Автоматизация настройки времени

Для DevOps-задач часто нужно автоматизировать настройку. Вот пример скрипта:

bash
#!/bin/bash
# Автоматическая настройка времени для Ubuntu
set -e

echo "Установка часового пояса Europe/Moscow..."
sudo timedatectl set-timezone Europe/Moscow

echo "Включение NTP синхронизации..."
sudo timedatectl set-ntp true

echo "Настройка RTC на использование UTC..."
sudo timedatectl set-local-rtc 0

echo "Применение кастомных NTP серверов..."
sudo sed -i 's/^#NTP=/NTP=ntp1.stratum1.ru ntp2.stratum1.ru/' /etc/systemd/timesyncd.conf
sudo sed -i 's/^#FallbackNTP=/FallbackNTP=ntp.ubuntu.com/' /etc/systemd/timesyncd.conf

echo "Перезапуск службы времени..."
sudo systemctl restart systemd-timesyncd

echo "Текущий статус:"
timedatectl status

FAQ: ответы на частые вопросы

Как проверить, синхронизировано ли время с NTP?

Выполни команду timedatectl status и посмотри на строку "System clock synchronized". Если "yes" — всё в порядке.

Чем отличается timedatectl от команды date?

timedatectl — это высокоуровневая утилита systemd для управления временем и часовыми поясами. date — классическая Unix-команда для отображения и установки системного времени. Для современных Ubuntu рекомендую использовать timedatectl.

Как изменить время на Ubuntu Server без графического интерфейса?

Используй команды терминала, которые мы разобрали выше. Основные из них:

  • sudo timedatectl set-time "YYYY-MM-DD HH:MM:SS" — установка времени
  • sudo timedatectl set-timezone Region/City — установка часового пояса
  • sudo timedatectl set-ntp true — включение NTP

Почему время в Docker-контейнерах отличается от хоста?

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

bash
# В контейнере
cat /etc/timezone
date

# При запуске контейнера можно указать часовой пояс:
docker run -e TZ=Europe/Moscow your-image

Как настроить автоматическую синхронизацию времени при загрузке?

В современных Ubuntu это включено по умолчанию через systemd-timesyncd. Убедись, что служба активна:

bash
sudo systemctl enable systemd-timesyncd
sudo systemctl start systemd-timesyncd

Заключение

Настройка времени на Ubuntu — базовая, но критически важная задача для любого системного администратора или разработчика. Запомни главное:

  • Используй timedatectl для большинства операций в Ubuntu 16.04+
  • Всегда храни аппаратные часы (RTC) в UTC
  • Включай NTP-синхронизацию для серверов с доступом в интернет
  • Проверяй часовой пояс после установки системы
  • Для сложных сценариев рассмотри использование chrony вместо systemd-timesyncd

Правильно настроенное время — фундамент для корректной работы планировщиков задач, систем логирования, SSL-сертификатов и распределенных систем. Не пренебрегай этой, казалось бы, простой настройкой.

Поделиться:
Сохранить гайд? В закладки браузера