9
июнь
2020
Поясное время в Linux, синхронизация часов компьютера по протоколу NTP
10:18

Поясное время в Linux, синхронизация часов компьютера по протоколу NTP

9 июнь 2020 10:18

Часовой пояс системы выбирается при установке дистрибутива. В дальнейшем, можно настроить синхронизацию времени (протокол NTP) для более точного времени и организовать вывод информации о других часовых поясах. Например, когда в Москве утро, в центральной части США глубокая ночь. Данная статья о том, как улучшить синхронизацию времени, задать часовой пояс и вывести время других часовых поясов на экран.

Введение

Работа службы времени в Linux возможна в двух вариантах, не исключающих один другого:

  • клиент (синхронизирует время данного ПК с другими серверами точного времени)
  • сервер (для раздачи точного времени на другие компьютеры сети).

Рассматриваю службу клиента времени.

Цели:
а) получить высокую точность времени (менее 0.5 секунды), на локальном компьютере
б) реализовать вывод на экран времени в различных часовых поясах.

План действий:

  1. Установка
  2. Запуск
  3. Проверка

Включение ntp клиента

Чтобы время синхронизировалось по сети, нужно установить ntp клиент и утилиту ntpdate:

su -
apt-get update
apt install ntp

Указание часового пояса

Прежде всего нужно проверить, какой часовой пояс задан в системе.

ls -l /etc/localtime

Для Москвы, С-Петербурга и Европейской части Российской Федерации будет выведена ссылка:

/etc/localtime -> /usr/share/zoneinfo/Europe/Moscow

это правильно. Но можно перенастроить компьютер на другой часовой пояс (если ПК переехал в другой регион).

В Linux Mint программа для смены часового пояса называется time-admin (которую необходимо запускать с правами суперпользователя su). Также данная программа доступна в меню "Пуск" - "Параметры" - "Дата и время".
Программа time-admin

Смену часового пояса можно выполнить и с помощью командной строки. Вначале выясняем, какие существуют часовые пояса, например, в Европе:

ls /usr/share/zoneinfo/Europe/

_Amsterdam Berlin Chisinau Isle_of_Man Lisbon Mariehamn Paris SanMarino Stockholm Vaduz Zagreb
Andorra Bratislava Copenhagen Istanbul Ljubljana Minsk Podgorica Sarajevo Tallinn Vatican Zaporozhye
Astrakhan Brussels Dublin Jersey London Monaco Prague Saratov Tirane Vienna Zurich
Athens Bucharest Gibraltar Kaliningrad Luxembourg Moscow Riga Simferopol Tiraspol Vilnius
Belfast Budapest Guernsey Kiev Madrid Nicosia Rome Skopje Ulyanovsk Volgograd
Belgrade Busingen Helsinki Kirov Malta Oslo Samara Sofia Uzhgorod Warsaw

Теперь делаем мягкий символический линк, например, на Минск:

Смотрим текущий часовой пояс

ls -l /etc/localtime

Выводится текст "/etc/localtime -> /usr/share/zoneinfo/Europe/Moscow"

Меняем часовой пояс, например, на Минск (только для примера):

sudo ln -sf /usr/share/zoneinfo/Europe/Minsk /etc/localtime

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

Для работы клиента ntp, нужны условия: наличие конфигурационного файла /etc/ntp.conf
разрешение на запуск клиента ntp и непосредственно запуск клиента.

  1. Конфигурационный файл /etc/ntp.conf

driftfile /var/lib/ntp/ntp.drift
leapfile /usr/share/zoneinfo/leap-seconds.list
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
pool 0.ubuntu.pool.ntp.org iburst
pool 1.ubuntu.pool.ntp.org iburst
pool 2.ubuntu.pool.ntp.org iburst
pool 3.ubuntu.pool.ntp.org iburst
pool ntp.ubuntu.com
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited
restrict 127.0.0.1
restrict ::1
restrict source notrap nomodify noquery

  1. Запуск сервиса клиента ntp разрешен по умолчанию.

Можно, но не обязательно дать команды

 systemctl enable ntp
 systemctl start ntp
 systemctl status ntp

Для того чтобы сервис перечитал обновленную конфигурацию (если редактировали файл /etc/ntp.conf), нужно выполнить

sudo systemctl restart ntp

Наблюдение работы клиента синхронизации времени

ntpq -pw

Будет выведен список серверов ntp, с которыми клиент выполняет синхронизацию времени. (Надо подождать, когда вывод программы закончится).

Как узнать отклонение времени локального компьютера и удаленного сервера времени

При помощи утилиты ntpq.

Или clockdiff

su -
apt-get update
apt install iputils-clockdiff

Узнаём отклонение времени от другого компьютера - NTP сервера:

sudo clockdiff 130.149.17.21

или

sudo clockdiff 1.ru.pool.ntp.org

Видно, что отклонение, т.е. неточность времени ПК составляет 34 миллисекунды:

..................................................
host=130.149.17.21 rtt=34(0)ms/34ms delta=-1ms/-1ms Tue Jun 9 11:38:44 2020

При сравнении с другим сервером ситуация такая же, отклонение 35 мс:

clockdiff 91.206.16.3

..................................................
host=91.206.16.3 rtt=35(0)ms/35ms delta=0ms/0ms Tue Jun 9 11:44:57 2020

Следует иметь в виду, что clockdiff не берёт в расчет сетевые задержки (ping), позволяет лишь сопоставить время с другим компьютером без учёта pong.

Более точное значение отклонения выводит команда

ntpq -p`** или **`ntpq -pw

где видна разница (offset +- jitter) уже в пару миллисекунд.

Ещё один способ узнать отклонение времени

https://time.is

Вывод мирового времени на экран

Программа "Мировое время" (globaltime) для Xfce Desktop Environment позволяет сделать часы с временем для нескольких часовых поясов.
Установка программы GlobalTime:

sudo apt install xfce4-datetime-plugin

Источники:



Похожие публикации