Чому я не бачу жодних доказів стрибків секунди під час цього моделювання?


-1

Я намагаюсь імітувати майбутню стрибкову секунду, щоб я міг перевірити поведінку своєї програми протягом цього часу, але я не впевнений, що я правильно налаштував тест.

На 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-сервер reflock, здається, певною мірою виконує цю роботу, оскільки системний журнал говорить:

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

Що я тут пропускаю?


Чи можете ви розмістити вихід з ntpq -pcrvбудь ласка. Мої виробничі коробки (Centos 6) стрибок повинен бути озброєним, але не активним. Також, яку версію високосного файлу ви використовуєте?
користувач3788685

@ user3788685: pastebin.com/jEGNZPzf А високосний файл завантажується прямо з IETF.org, як видно з наведених вище кроків.
Гонки легкості на орбіті

було щось у dmesgвас - вам слід отримати рядок, як kernel inserting leap secondя отримую і 60-ту секунду, і рядок повідомлення журналу, коли вставляється дійсний стрибок.
user3788685

@ user3788685: Ні, не те, що я можу згадати.
Гонки легкості на орбіті

FWIW справжній стрибок секунди дійсно застосував правильно у ніч на 31-ту, AFAICT.
Гонки легкості на орбіті

Відповіді:


1

Я хотів би додати це як коментар до відповіді 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. Моє, тому розслідування все ще тривають ...


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.