[ Пред. ] [ Содержание ] [ След. ]

Автообновление времени и даты

[ @console @time ]

 


Для ориентира можно глянуть на https://time.is


Настроить timezone своего профиля


Это делается в настройках системы (GUI), а тут рассмотрим, как сделать то же самое в консоли.


Сперва надо подружиться с понятием RTC (real-time clock) — это компонент в BIOS компьютера, который отвечает за отслеживание текущего времени и после отключения системы (поэтому живет на плоской батарейке на материнской плате).


Посмотреть нынешние настройки времени:


timedatectl


Пример ответа:


Local time: Пт 2024-11-01 18:16:09 EET
Universal time: Пт 2024-11-01 16:16:09 UTC
TC time: Пт 2024-11-01 16:16:09
Time zone: Europe/Chisinau (EET, +0200)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no


Последние строки:


NTP service: active — да, это сервис из systemd.


RTC in local TZ: no — да, так и надо, бо у нас real-time clock (RTC) установлен НЕ в локальной TZ (TimeZone).


См. отдельно Синхронизация времени между Linux и Windows про настройку времени по RTC.


Системе можно/нужно указать, что для RTC (real-time clock) надо использовать время по UTC:


timedatectl set-local-rtc 0


Указать таймзону:


sudo timedatectl set-timezone Europe/Chisinau


Можно глянуть список временных зон по своему региону:


timedatectl list-timezones | grep Europe


Можно глянуть список всех доступных timezоne (очень длинный список):


timedatectl list-timezones


Видно, что время в системе уже синхронизируется (System clock synchronized: yes). С каким именно источником?


timedatectl show-timesync --all


Пример ответа:


LinkNTPServers=
SystemNTPServers=
RuntimeNTPServers=
FallbackNTPServers=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org
ServerName=2.debian.pool.ntp.org
ServerAddress=178.17.160.12
RootDistanceMaxUSec=5s
PollIntervalMinUSec=32s
PollIntervalMaxUSec=34min 8s
PollIntervalUSec=34min 8s
NTPMessage={ Leap=0,
Version=4,
Mode=4,
Stratum=2,
Precision=-23,
RootDelay=47.180ms,
RootDispersion=153.976ms,
Reference=C3B01ACD,
OriginateTimestamp=Fri 2024-11-01 17:50:23 EET,
ReceiveTimestamp=Fri 2024-11-01 17:50:23 EET,
TransmitTimestamp=Fri 2024-11-01 17:50:23 EET,
DestinationTimestamp=Fri 2024-11-01 17:50:23 EET,
Ignored=no,
PacketCount=8,
Jitter=12.118ms }
Frequency=-397869


Время синхронизируется с сервером 2.debian.pool.ntp.org, который отзывается по 178.17.160.12 (можно только пинговать, в браузере не откроется).


Ещё указаны резервные NTP-серверы (FallbackNTPServers), такие как
0.debian.pool.ntp.org,
1.debian.pool.ntp.org
и др, которые будут пропингованы, если основной сервер станет недоступен.


Основные параметры:


RootDistanceMaxUSec=5s — максимальная допустимая задержка для успешной синхронизации.
PollIntervalUSec=34min 8s — текущий интервал опроса сервера (примерно 34 минуты).
NTPMessage — подробная информация о последнем NTP-сообщении, включая точность (Stratum=2) и показатели синхронизации (Jitter, RootDelay, RootDispersion).


Не очень-то нужно, но иногда надо


Выбрать сервер для синхронизация времени


Тут надо выбирать, с чем идти дальше — или ntp, или timesyncd.


Раньше был только железобетонный Network Time Protocol — ntp. Он и сегодня работает на серверах, где нужен постоянный учёт времени с точностью до милисекунд с синхронизацией между несколькими системами (production scenario). „NTP deamon is required only when a NTP server is required” ©


Сегодня в Debian за время отвечает отдельный сервис timesyncd, который „simpler to configure, more efficient, more secure, blah-blah-blah“. Но это сервис, а не time-server, он условно удобнее в настройке и не так требователен к милисекундам (user scenario).


Конечно, мы выбираем


systemctl status systemd-timesyncd


Пример ответа:


systemd-timesyncd.service - Network Time Synchronization
	 Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; preset: enabled)
	 Active: active (running) since Fri 2024-11-01 16:42:07 EET; 2h 12min ago
	   Docs: man:systemd-timesyncd.service(8)
   Main PID: 818 (systemd-timesyn)
	 Status: "Contacted time server 178.17.160.12:123 (2.debian.pool.ntp.org)."
	  Tasks: 2 (limit: 18185)
	 Memory: 1.6M
		CPU: 71ms
	 CGroup: /system.slice/systemd-timesyncd.service
			 └─818 /lib/systemd/systemd-timesyncd

Видно, что время получено с 178.17.160.12:123 (2.debian.pool.ntp.org) — те же данные, что и после „timedatectl show-timesync --all”).


Где взять список серверов для Debian — https://www.ntppool.org/ru/


Есть и Молдова — https://www.ntppool.org/zone/md — но основной сервер для нее установлен общеевропейский, поэтому разумнее синхронизироваться с time-серверами соседней страны.


Остановить синхронизацию времени


sudo systemctl stop systemd-timesyncd && sudo systemctl status systemd-timesyncd


Ожидаемый ответ: Active: inactive (dead)


Указать сервер для синхронизации времени


sudo mcedit /etc/systemd/timesyncd.conf


Заменить содержимое на


[Time]
NTP=0.ro.pool.ntp.org 1.ro.pool.ntp.org 2.ro.pool.ntp.org 3.ro.pool.ntp.org
FallbackNTP=0.europe.pool.ntp.org
RootDistanceMaxSec=5
PollIntervalMinSec=32
PollIntervalMaxSec=2048
ConnectionRetrySec=30
SaveIntervalSec=60

Проверить связь с сервером синхронизации


timedatectl timesync-status


Пример ответа:


Server: n/a (0.ro.pool.ntp.org)
Poll interval: 0 (min: 32s; max 34min 8s)
Packet count: 0


Читаем так: сервер установлен, но не отвечает. Да, потому что на нашей стороне отключен сервис timesyncd.


Запустить systemd-timesyncd


sudo systemctl daemon-reload && sudo systemctl start systemd-timesyncd && sudo systemctl status systemd-timesyncd


Ожидаемый ответ:


Active: active (running) since Tue 2019-12-10 19:47:09 EET; 21s ago


Снова проверить связь с сервером синхронизации


timedatectl timesync-status


Пример ответа:


Server: 92.86.106.228 (0.ro.pool.ntp.org)
Poll interval: 2min 8s (min: 32s; max 34min 8s)
Leap: normal
Version: 4
Stratum: 2
Reference: 59D409B4
Precision: 1us (-24)
Root distance: 23.550ms (max: 5s)
Offset: -7.654ms
Delay: 57ms
Jitter: 2.892ms
Packet count: 2
Frequency: +69,564ppm


Всё.


То же самое детально:


timedatectl show-timesync --all