Почему я не вижу никаких признаков високосной секунды во время этой симуляции?

487
Lightness Races in Orbit

Я пытаюсь смоделировать предстоящую дополнительную секунду, чтобы можно было протестировать поведение своего приложения примерно в это время, но я не уверен, что правильно настроил тест.

На CentOS 7.2.1511 внутри виртуальной машины Oracle VirtualBox, вот как я настраиваю NTP и запускаю тест:

yum install ntp  echo "server 127.127.1.0" > /etc/ntp.conf echo "fudge 127.127.1.0 stratum 10" >> /etc/ntp.conf echo "leapfile \"/var/ntp/leap-seconds.list\"" >> /etc/ntp.conf  mkdir /var/ntp wget -P /var/ntp https://www.ietf.org/timezones/data/leap-seconds.list  setenforce 0 # avoids having to configure SELinux access to the .list  date -s "2016-12-31 23:55"  service ntpd restart 

Тем не менее, если оставить следующую команду запущенной, это показывает, что никакого временного шага не существует:

$ i=0; while true; do echo -n "$i: "; date -u; ((i++)); sleep 1; done (..) 45: Sat 31 Dec 23:59:56 UTC 2016 46: Sat 31 Dec 23:59:57 UTC 2016 47: Sat 31 Dec 23:59:58 UTC 2016 48: Sat 31 Dec 23:59:59 UTC 2016 49: Sun 1 Jan 00:00:00 UTC 2017 50: Sun 1 Jan 00:00:01 UTC 2017 51: Sun 1 Jan 00:00:02 UTC 2017 52: Sun 1 Jan 00:00:03 UTC 2017 53: Sun 1 Jan 00:00:04 UTC 2017 (..) 

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

И (хотя это труднее продемонстрировать), я не вижу никаких признаков вращения часов в файлах данных, создаваемых моим приложением; моя конфигурация NTP должна быть пошаговой вместо поворота в любом случае :

$ cat /etc/sysconfig/ntpd OPTIONS="-g" 

Мой локальный сервер NTP refclock, кажется, выполняет работу в некоторой степени, потому что системный журнал говорит:

Dec 31 23:59:59 localhost ntpd[1871]: 0.0.0.0 051b 0b leap_event 

Что мне здесь не хватает?

-1
Вы можете опубликовать вывод `ntpq -pcrv`, пожалуйста. Мои производственные боксы (Centos 6) должны быть вооружены, но не активны. Также, какую версию файла скачка вы используете? user3788685 7 лет назад 0
@ user3788685: http://pastebin.com/jEGNZPzf И файл скачка загружается прямо с IETF.org, как вы можете видеть из приведенных выше шагов. Lightness Races in Orbit 7 лет назад 0
было ли что-нибудь в `dmesg` - вы должны получить строку типа` ядро, вставляющее високосную секунду`, я получаю и 60-ю секунду, и строку сообщения журнала, когда вставлен действительный скачок. user3788685 7 лет назад 0
@ user3788685: Нет, не то, чтобы я мог вспомнить. Lightness Races in Orbit 7 лет назад 0
FWIW реальная високосная секунда действительно применялась в ночь на 31-е, AFAICT. Lightness Races in Orbit 7 лет назад 0

1 ответ на вопрос

1
Darren

Я хотел бы добавить это как комментарий к ответу grawity, но мне не хватает представителя. Хотя он (ы) прав, что в неправильном часовом поясе не учитывается наличие секунды с именем «60» (т. Е. Вы не увидите метку времени 23:59:60), ядро ​​Linux все равно должно вставить вторая секунда, повторяя секунду 59 дважды (см. здесь для получения дополнительной информации). Так что вы должны увидеть повтор отметки времени 23:59:59. Я воспроизвел то, что вы видите, так что вы не сумасшедший, но я все еще пытаюсь понять, почему.

Одна вещь, которую нужно проверить, это то, что ваш локальный демон ntp определенно вставляет отложенный флаг ожидания (либо проверяя LI = 1 в пакете, используя Wireshark или аналогичный, либо используя эту команду ntpq:

ntpq -c 'lassoc' -c "mrv &1 &999 leap,srcadr,stratum" 

Ищите прыжок = 01. Мой так расследования еще продолжаются ...

http://pastebin.com/ubGRJQiD "leap = 00"! Lightness Races in Orbit 7 лет назад 0

Похожие вопросы