Что показывает timedatectl и как читать вывод
Команда timedatectl входит в состав systemd и есть в современных Ubuntu и Debian. Запущенная без параметров, она выводит сводку о времени. Права администратора для чтения не нужны, они потребуются только для изменений.
В выводе вы увидите несколько строк, и каждая отвечает на свой вопрос:
- Local time — местное время с учётом выбранного пояса;
- Universal time — всемирное время UTC;
- RTC time — время аппаратных часов материнской платы;
- Time zone — выбранный часовой пояс;
- System clock synchronized — синхронизированы ли часы с внешним источником;
- NTP service — включена ли служба синхронизации;
- RTC in local TZ — хранятся ли аппаратные часы в местном времени.
Эти строки важны для диагностики. Если Local time неверен, а Universal time совпадает с реальным, дело в часовом поясе. Если расходятся оба значения, часы идут неправильно, и нужна синхронизация. Если сходятся Local time и RTC, а в «RTC in local TZ» написано yes, аппаратные часы хранятся в местном времени, что бывает при двойной загрузке.
Смена часового пояса через set-timezone
Пояса в Linux называются по формату «регион/город», например Europe/Moscow или Asia/Yekaterinburg. Список доступных значений показывает timedatectl list-timezones; он длинный, поэтому его удобно фильтровать: timedatectl list-timezones | grep Europe.
Последовательность действий такая:
- Найдите нужное название в списке.
- Выполните sudo timedatectl set-timezone Регион/Город, подставив своё значение.
- Проверьте результат командой timedatectl: строки Time zone и Local time должны измениться.
- Если приложения показывают старое время, перезапустите их: некоторые читают пояс только при старте.
То же можно сделать в графических настройках, в разделе даты и времени; название пункта зависит от окружения. Если в вашем окружении пояс определяется автоматически по сети, ручная настройка может быть переопределена, а это нормально.
Пояс определяет только то, как показывается время: внутри системы события хранятся в UTC. Поэтому смена пояса, как правило, не искажает журналы и не влияет на время в файлах. Отдельный вопрос — перевод на летнее время: для многих регионов он определяется правилами зоны в системной базе, и обновления этой базы приходят вместе с обновлениями пакетов.
Синхронизация времени: включить NTP и проверить
Часы компьютера со временем отстают или спешат, поэтому их периодически подстраивают по сети с помощью протокола NTP, описанного в словаре. В настольных Ubuntu и Debian за это обычно отвечает systemd-timesyncd, в других установках может работать chrony или другая служба.
Включить автоматическую синхронизацию штатными средствами systemd можно командой sudo timedatectl set-ntp true. Если в строке NTP service значится active, а System clock synchronized равно yes, всё работает. Подробности по службе timesyncd показывает команда timedatectl timesync-status.
Если синхронизация не включается, проверьте по порядку:
- есть ли доступ в интернет, так как служба обращается к серверам времени по сети;
- установлена ли и запущена ли служба времени, а не конфликтуют ли две службы сразу;
- не закрывает ли доступ к серверам времени роутер или межсетевой экран; настройка ufw описана отдельно;
- журнал службы: journalctl -u systemd-timesyncd.
Если синхронизация отключена намеренно, например командой set-ntp false, время можно установить вручную через timedatectl set-time (при включённой синхронизации команда может отказаться работать), но точность такого способа невысока, и для обычного компьютера он нужен редко.
Двойная загрузка: почему Linux и Windows сбивают друг другу часы
Типичная жалоба: после загрузки Windows время в Linux отличается на несколько часов, и наоборот. Причина в разном представлении аппаратных часов. Linux по умолчанию считает, что аппаратные часы хранят UTC, а Windows по умолчанию записывает в них местное время. Каждая система, синхронизируя часы, пишет туда своё значение, и вторая видит смещение.
Исправить можно двумя путями. Первый — научить Linux работать с местным временем: sudo timedatectl set-local-rtc 1. Команда сработает, но в документации systemd режим назван не рекомендуемым, так как он создаёт трудности при смене пояса и перехода на летнее время. Второй путь — переключить Windows на хранение UTC; это делается правкой реестра (перед ней сделайте его резервную копию), и подробности лучше брать из документации Microsoft, так как они могут отличаться между версиями.
Выбор зависит от привычек: если вы редко меняете пояс и используете обе системы, первый вариант может оказаться проще. Какой бы путь вы ни выбрали, после изменения проверьте timedatectl в Linux и время в Windows. Если используется только Linux, трогать эти настройки не нужно.
Часы сбиваются: возможные причины и порядок проверки
Если время «уезжает» повторно после того, как вы его исправили, причину стоит искать системно. Самые распространённые варианты безобидны, но один может указывать на оборудование.
| Симптом | Вероятная причина | Что проверить |
|---|---|---|
| верное время, неверный пояс | не задан или неправильно задан пояс | timedatectl, set-timezone |
| сбой на несколько часов после Windows | разный режим аппаратных часов | RTC in local TZ, set-local-rtc |
| время дрейфует при выключенной синхронизации | NTP отключён | set-ntp true |
| время сбрасывается после выключения питания | вероятно, разряженная батарейка материнской платы | проверить и при необходимости заменить батарейку |
| неверная дата в сертификатах и обновлениях | время сильно расходится | синхронизировать, затем повторить действие |
Неверное время мешает не только удобству: из-за него могут не работать проверки сертификатов, обновления пакетов и вход на некоторые сайты, ведь они сверяют даты. После исправления повторите проблемное действие. Если время сбивается после каждого выключения питания, вероятна разряженная батарейка CMOS на материнской плате, и в этом случае помогает её замена.
Короткое замечание о времени в журналах и файлах. Записи в журнале systemd хранят время в абсолютном виде, а показывают его в вашем поясе, поэтому при смене пояса прежние записи отображаются уже по-новому, и это нормально. Если вы сопоставляете события с другими устройствами, например с роутером, сначала убедитесь, что и там время настроено верно. Иначе сравнение окажется сбивающим с толку: расхождение в несколько минут трудно отличить от настоящей задержки.