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?
dmesg
- powinieneś mieć taką linię kernel inserting leap second
Dostaję zarówno 60-tą sekundę, jak i wiersz komunikatu dziennika po wstawieniu poprawnego skoku.
ntpq -pcrv
Proszę. Skoki mojej produkcji (Centos 6) powinny być uzbrojone, ale nie aktywne. Również jakiej wersji pliku przestępnego używasz?