Поиск по сайту:

Как использовать команду timedatectl в Linux


Команда Linux timedatectl позволяет установить время, дату и часовой пояс для системных часов и часов реального времени. Уделите немного времени, и мы покажем вам, как все это работает.

Это все относительно

Обработка времени вашим компьютером — одна из тех вещей, которые, как вы могли бы ожидать, будут довольно простыми. По крайней мере, до тех пор, пока вы не начнете разбираться в этом.

Системные часы Linux отсчитывают количество секунд, прошедших с эпохи Unix. Это было в 00:00:00 1 января 1970 года по всемирному координированному времени. UTC означает всемирное координированное время, но обычно его называют всемирным координированным временем или просто всемирным временем. Это стандарт времени, по которому мир управляет и регулирует время. Различные часовые пояса применяют смещение к UTC, чтобы получить свое местное время. Некоторые часовые пояса опережают UTC, а другие отстают от него.

Системные часы на компьютерах с Linux основаны на программном обеспечении. Очевидно, что он не может работать, когда компьютер выключен. Другие часы, аппаратные часы реального времени с батарейным питанием, могут работать, когда компьютер выключен. Его цель — сообщать системным часам, который час, всякий раз, когда загружается Linux. За исключением случаев, когда возможен доступ к серверу сетевого протокола времени (NTP).

NTP-серверы — это серверы, которые предоставляют точную информацию о времени компьютерам, которые ее запрашивают. Если вы загружаете свой компьютер или ноутбук и у вас нет доступа к Интернету или он не настроен для использования серверов NTP, часы реального времени используются для запуска системных часов вместо сервера NTP.

Системные часы всегда в формате UTC. Любое приложение, которому необходимо получить местное время, должно:

  • Доступ к системным часам и получение UTC
  • Узнайте, в каком часовом поясе он находится, и примените правильное смещение.
  • Учитывать, действует ли летнее время

Преобразование из UTC в местное время выполняется приложением, а не системными часами. Или, точнее, преобразование выполняется библиотеками времени и даты, к которым привязано приложение. Вот почему жизненно важно, чтобы ваш компьютер знал, какой сейчас часовой пояс, какое время UTC, сколько секунд прошло с эпохи Unix и действует ли летнее время.

В дистрибутивах Linux на основе systemd мы используем команду timedatectl, чтобы просмотреть или изменить эти настройки и значения.

Начало работы с timedatectl

Чтобы просмотреть текущие данные, время и другие значения, используйте команду timedatectl с оператором status.

timedatectl status

На самом деле, вы можете сбросить статус, и вы все равно получите тот же результат.

timedatectl

Оба набора выходных данных показывают:

  • Местное время: время, которое считает компьютер в соответствии с его часовым поясом.
  • Универсальное время: время в формате UTC.
  • Время RTC: время, которое используют часы реального времени. Обычно это UTC.
  • Часовой пояс: информация о настроенном часовом поясе.
  • Синхронизированы системные часы: синхронизируются ли системные часы с NTP-сервером.
  • Служба NTP. Активна ли служба NTP на компьютере.
  • RTC в местном TZ: используют ли часы реального времени местное время вместо UTC.

Вы можете увидеть, сколько часовых поясов поддерживает команда timedatectl, набрав:

timedatectl list-timezones | wc -l

Это намного больше, чем часовых поясов в мире. Если мы направим вывод в grep и отфильтруем записи для «Америки» и направим их в less, мы сможем прокручивать более управляемый список.

timedatectl list-timezones | grep "America/" | less

Когда вы просмотрите этот список, вы увидите, что «Америка» имеет самое широкое значение. Второе, что вы заметите, это то, что большинство записей не являются фактическими часовыми поясами.

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

Если вы просмотрите нефильтрованный список часовых поясов, поддерживаемых timedatectl, вы увидите не только часовые пояса, но и места. Чтобы установить часовой пояс, вы можете указать его по имени, например, EST или GMT, или вы можете выбрать место в том же часовом поясе, что и вы, например, Лондон или Нью-Йорк.

Вы редко будете делать сброс часового пояса, но, возможно, вы переехали домой или какое-то время работаете вдали от дома и хотите локализовать свой ноутбук. Если вам нужно сбросить свой часовой пояс, выберите место в часовом поясе, который вы хотите использовать.

Мы настроим этот компьютер на горное время, которое совпадает с часовым поясом Эдмонтона. Затем мы увидим, как изменились настройки.

timedatectl set-timezone "America/Edmonton"
timedatectl

Наш часовой пояс был изменен, наше местное время изменилось, и наше смещение от UTC увеличилось.

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

Хотя вручную установить время и дату можно, обычно в этом нет необходимости. Использование синхронизации времени и NTP является предпочтительным способом обеспечения точности времени и даты вашего компьютера. Если вы попытаетесь изменить дату или время на своих компьютерах, вы, вероятно, получите сообщение об ошибке, говорящее о том, что используется синхронизация времени.

timedatectl set-time 10:30:00

Используйте эту команду, чтобы отключить службу синхронизации времени:

sudo systemctl stop systemd-timesyncd.service

Вы можете установить время, дату или и то, и другое, используя оператор установки времени timedatectl. даты указаны в порядке год-месяц-день ГГГ-ММ-ДД, а время в порядке часы-минуты-секунды ЧЧ:ММ:СС. Мы собираемся установить время и дату с помощью этой команды:

timedatectl set-time "2022-01-30 10:30:00"

Затем мы проверим, произошли ли изменения, используя timedatectl.

timedatectl

Дата и время изменились. Также обратите внимание, что компьютер использует ложное время UTC. Нам также сообщается, что системные часы не синхронизируются, а служба NTP неактивна.

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

sudo systemctl start systemd-timesyncd.service
timedatectl

RTC: UTC или LTZ?

Можно настроить часы реального времени на время вашего местного часового пояса, а не на время UTC — возможно, но нежелательно. Если вы внесете изменения, вы увидите предупреждение о серьезных последствиях, которые это может иметь для вашей системы в будущем.

Причина, по которой вам показан этот метод, заключается в том, что вы можете столкнуться с машиной, на которой возникают странные проблемы с настройками времени. Вот как можно установить часы реального времени обратно в UTC.

Во-первых, нам нужно установить местный часовой пояс.

timedatectl set-local-rtc 1

Затем мы запросим у timedatectl его статус.

timedatectl

Думаю, они ясно выразили свои чувства.

Чтобы восстановить часы реального времени в формате UTC, используйте эту команду:

timedatectl set-local-rtc 0

Установи и забудь

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

Установите системные часы на свой часовой пояс, часы реального времени на UTC и убедитесь, что ваша система опрашивает сервер сетевого протокола времени. Это состояние по умолчанию после большинства установок.

Если все они настроены, системы времени вашего компьютера позаботятся о себе сами.