Dlaczego podczas tej symulacji nie widzę żadnych dowodów na sekundę przestępną?

-1

Próbuję symulować nadchodzący drugi skok, aby móc przetestować zachowanie mojej aplikacji w tym czasie, ale nie jestem przekonany, że poprawnie skonfigurowałem test.

W CentOS 7.2.1511 wewnątrz maszyny wirtualnej Oracle VirtualBox, tutaj jak skonfigurować NTP i rozpocznij test:

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

Jednak pozostawienie następującego polecenia uruchamiającego pokazuje, że nie ma żadnego kroku czasowego:

$ 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
(..)

Oglądam dane wyjściowe i każda linia jest drukowana jedną sekundę po drugiej.

I (choć jest to trudniejsze do wykazania) nie widzę żadnych śladów zegara obracających się w plikach danych tworzonych przez moją aplikację; moja konfiguracja NTP i tak powinno się przeskakiwać, a nie obracać :

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

Mój lokalny serwer refclock NTP wydaje się działać do pewnego stopnia, ponieważ dziennik systemowy mówi:

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

Czego mi tu brakuje?

Lightness Races in Orbit
źródło
możesz opublikować wyjście ntpq -pcrv Proszę. Skoki mojej produkcji (Centos 6) powinny być uzbrojone, ale nie aktywne. Również jakiej wersji pliku przestępnego używasz?
user3788685
@ user3788685: pastebin.com/jEGNZPzf Plik skoku jest pobierany bezpośrednio z IETF.org, jak widać z powyższych kroków.
Lightness Races in Orbit
było tam coś dmesg - powinieneś mieć taką linię kernel inserting leap second Dostaję zarówno 60-tą sekundę, jak i wiersz komunikatu dziennika po wstawieniu poprawnego skoku.
user3788685
@ user3788685: Nie, nie mogę sobie przypomnieć.
Lightness Races in Orbit
FWIW rzeczywista sekunda skoku została zastosowana poprawnie w nocy 31. AFAICT.
Lightness Races in Orbit

Odpowiedzi:

1

Chciałbym dodać to jako komentarz do odpowiedzi grawity, ale nie mam wystarczającej liczby rep. Podczas gdy on ma rację, że nie prawa strefa czasowa nie bierze pod uwagę istnienia drugiego zwanego „60” (tzn. Nie zobaczysz znacznika czasu 23:59:60), jądro Linuksa powinno nadal wstawiać sekunda skoku przez powtórzenie drugiej 59 razy (patrz tutaj po więcej informacji). Powinieneś więc zobaczyć powtórzenie znacznika czasu 23:59:59. Odtworzyłem to, co widzisz, więc nie jesteś szalony, ale wciąż próbuję zrozumieć, dlaczego.

Jedną rzeczą do sprawdzenia jest to, że twój lokalny demon ntp zdecydowanie wstawia flagę drugiego skoku w toku (albo przez sprawdzenie LI = 1 w pakiecie za pomocą Wiresharka lub podobnego, albo za pomocą tego polecenia ntpq:

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

Szukaj skoku = 01. Mój jest taki, że dochodzenia nadal trwają

Darren
źródło
pastebin.com/ubGRJQiD „leap = 00”!
Lightness Races in Orbit