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?
ntpq -pcrv
Proszę. Skoki mojej produkcji (Centos 6) powinny być uzbrojone, ale nie aktywne. Również jakiej wersji pliku przestępnego używasz?dmesg
- powinieneś mieć taką liniękernel inserting leap second
Dostaję zarówno 60-tą sekundę, jak i wiersz komunikatu dziennika po wstawieniu poprawnego skoku.Odpowiedzi:
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:
Szukaj skoku = 01. Mój jest taki, że dochodzenia nadal trwają
źródło