---
description: 'Краткое описание обработки високосных секунд (секунд координации) в FreeBSD'
tags: ["Leap Seconds", "Support", "Verification", "FreeBSD"]
title: 'Поддержка високосных секунд в FreeBSD'
---

= Поддержка високосных секунд в FreeBSD
:doctype: article
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:source-highlighter: rouge
:experimental:
:images-path: articles/leap-seconds/

ifdef::env-beastie[]
ifdef::backend-html5[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
:imagesdir: ../../../images/{images-path}
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

'''

toc::[]

[[leapseconds-definition]]
== Введение

_Секунда координации_ (високосная секунда) — это односекундная
корректировка, вносимая в определённые моменты года в UTC для синхронизации
атомных шкал времени с вариациями вращения Земли. В этой статье описано, как
FreeBSD взаимодействует с секундами координации.

На момент написания следующая високосная секунда будет добавлена 2015-Jun-30
23:59:60 UTC. Эта високосная секунда выпадет на рабочий день для Северной и
Южной Америки, а также для региона Азии/Тихоокеанского региона.

Секунды координации объявляются
https://www.iers.org/IERS/EN/Home/home_node.html[IERS] в
https://datacenter.iers.org/data/latestVersion/16_BULLETIN_C16.txt[Бюллетене
C].

Стандартное поведение високосной секунды описано в
https://datatracker.ietf.org/doc/html/rfc7164#section-3[RFC 7164]. Также
см. man:time2posix[3].

[[leapseconds-posix]]
== Обработка високосных секунд по умолчанию в FreeBSD

Самый простой способ обработки високосных секунд — использование правил
времени POSIX, которые FreeBSD использует по умолчанию, в сочетании с
extref:{handbook}[NTP, network-ntp]. Когда man:ntpd[8] работает и время
синхронизировано с вышестоящими серверами NTP, которые корректно
обрабатывают високосные секунды, високосная секунда приведёт к
автоматическому повтору последней секунды дня в системном времени. Другие
корректировки не требуются.

Если вышестоящие серверы NTP не обрабатывают високосные секунды корректно,
man:ntpd[8] изменит время на одну секунду после того, как ошибочный
вышестоящий сервер заметит это и изменит своё время.

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

[[leapseconds-cautions]]
== Предупреждения

Високосные секунды добавляются одновременно по всему миру: в полночь по
UTC. В Японии это середина утра, в Тихоокеанском регионе — середина дня, в
Америке — поздний вечер, а в Европе — ночь.

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

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

Другие операционные системы и компьютеры могут обрабатывать високосную
секунду иначе, чем FreeBSD, а системы без корректной и стабильной службы NTP
вообще не будут знать о високосных секундах.

Нередко компьютеры выходят из строя из-за високосных секунд, и опыт показал,
что значительная часть всех публичных NTP-серверов может обрабатывать и
объявлять високосную секунду неправильно.

Пожалуйста, постарайтесь убедиться, что из-за секунды координации не
произойдет ничего ужасного.

[[leapseconds-testing]]
== Тестирование

Возможно проверить, будет ли использована секунда координации. Из-за
особенностей NTP, проверка может работать до 24 часов до введения секунды
координации. Некоторые крупные источники эталонных часов объявляют о
секундах координации всего за час до события. Запрос к демону NTP:

[source, shell]
....
% ntpq -c 'rv 0 leap'
....

Вывод, включающий `leap_add_sec`, указывает на корректную поддержку секунды
координации. До 24 часов перед наступлением секунды координации или после её
прохождения будет отображаться `leap_none`.

[[leapseconds-conclusion]]
== Заключение

На практике секунды координации обычно не представляют проблемы в
FreeBSD. Мы надеемся, что этот обзор поможет прояснить, чего ожидать и как
сделать обработку секунды координации более гладкой.
