Używam Ubuntu na systemie osadzonym opartym na ARM, który nie ma RTC zasilanego bateryjnie. Czas budzenia upłynął gdzieś w 1970 roku. Dlatego używam usługi NTP, aby zaktualizować czas do bieżącej godziny.
Dodałem następujący wiersz do /etc/rc.local
pliku:
sudo ntpdate -s time.nist.gov
Jednak po uruchomieniu nadal zajmuje to kilka minut, zanim czas zostanie zaktualizowany, w którym okresie nie mogę efektywnie pracować z tar
i make
.
Jak mogę wymusić aktualizację zegara w danym momencie?
AKTUALIZACJA 1: Poniższe (dzięki Ericowi i Stephanowi) działa dobrze z linii poleceń, ale nie aktualizuje zegara po włożeniu /etc/rc.local
:
$ date ; sudo service ntp stop ; sudo ntpdate -s time.nist.gov ; sudo service ntp start ; date
Thu Jan 1 00:00:58 UTC 1970
* Stopping NTP server ntpd [ OK ]
* Starting NTP server [ OK ]
Thu Feb 14 18:52:21 UTC 2013
Co ja robię źle?
AKTUALIZACJA 2: Próbowałem postępować zgodnie z kilkoma sugestiami, które pojawiły się w odpowiedzi na pierwszą aktualizację, ale wydaje się, że nic tak naprawdę nie wykonuje zadania zgodnie z wymaganiami. Oto, co próbowałem:
- Zamień serwer na
us.pool.ntp.org
- Użyj wyraźnych ścieżek do programów
- Usuń
ntp
usługę całkowicie i pozostaw tylkosudo ntpdate ...
wrc.local
- Usuń
sudo
powyższe polecenie wrc.local
Korzystając z powyższego, maszyna nadal uruchamia się w 1970 roku. Jednak po zrobieniu tego z wiersza poleceń po zalogowaniu (via ssh
) zegar jest aktualizowany, gdy tylko się wywołam ntpdate
.
Ostatnią rzeczą, którą zrobiłem, było usunięcie tego rc.local
i połączenie z ntpdate
moim .bashrc
plikiem. To aktualizuje zegar zgodnie z oczekiwaniami i otrzymuję prawdziwy bieżący czas, gdy wiersz polecenia jest dostępny.
Oznacza to jednak , że jeśli urządzenie jest włączone i żaden użytkownik nie jest zalogowany, czas nigdy nie otrzyma aktualizacji. Mogę oczywiście ponownie zainstalować ntp
usługę, aby przynajmniej zegar był aktualizowany w ciągu kilku minut od uruchomienia, ale potem wracamy do kwadratu 1.
Czy istnieje więc powód, dla którego umieszczenie ntpdate
polecenia rc.local
nie wykonuje wymaganego zadania, a robi to .bashrc
dobrze?
ntpdate -s ntp.ubuntu.com
[1]: askubuntu.com/a/81301/130162sudo
z plików /etc/rc.locale. Są one już uruchomione jako root.timedatectl
, ale askubuntu.com/questions/832646/…Odpowiedzi:
Prawdopodobnie
ntp
usługa jest uruchomiona, dlategontpdate
nie można otworzyć gniazda (port 123 UDP) i połączyć się z serwerem NTTP.Spróbuj z wiersza poleceń:
Jeśli chcesz to
/etc/rc.local
wykorzystać, wykonaj następujące czynności:źródło
service
z rc.local i cron, ale udało mi się to naprawić za pomocą /etc/init.d/xxx. Właściwie uważam, że nie musisz podawać pełnej ścieżkintpdate
, lubię używać pełnych ścieżek w skryptach, aby mieć pewność, że odpowiedni plik zostanie znaleziony.us.pool.ntp.org
jest bardziej responsywny.-u
opcji nie musisz zatrzymywać usługi NTTP:sudo ntpdate -u time.nist.gov
Zamiast ntpdate (który jest przestarzały ) użyj
-gq
Opowiada demona ntp skorygować czas niezależnie od offsetu (g
natychmiast) i wyjścia (q
) po ustawieniu czasu.źródło
ntpd
podręcznika, nie jestem pewien, jak wymusza to aktualizację?sudo ntpd -gq
nie wychodzi! Mam 14.10 i muszę CTRL + C, aby kontynuować ... lub jak długo to potrwa?sudo service ntp...
nasudo service ntpd...
.Użyj sntp, aby natychmiast ustawić czas. Na przykład:
Liczby po -s mogą być dowolnym serwerem czasu ntp, tym jest NIST w Ft. Collins, Kolorado.
źródło
Jak zauważyli inni, najlepszym rozwiązaniem jest poinstruowanie ntpd, aby zignorował próg paniki, który domyślnie wynosi 1000 sekund. Możesz skonfigurować próg paniki na jeden z dwóch sposobów:
/etc/default/ntp
i upewnij się, że jest dostępna opcja -g.tinker panic 0
na górzeJak dotąd jest to zasadniczo to, co zalecili inni, jednak myślę, że powinieneś zrobić jeszcze jeden krok. Zainstaluj program fałszywy hwclock:
Po zainstalowaniu fałszywego hwclocka twoja maszyna nie uruchomi się, myśląc, że to od 1970 roku. Kiedy twoja maszyna się uruchomi, ustawi swój zegar na znacznik czasu napisany przez fałszywy hwclock podczas ostatniego restartu / zamknięcia. Oznacza to, że możesz mieć nieco poprawny zegar na wypadek problemów z siecią podczas uruchamiania.
źródło
-g
wydawało się, że nic dla mnie nie robi (w wierszu poleceń nie mam/etc/default/ntp
), ale dodajetinker panic 0
dontp.conf
pracytinker panic 0
Zdaje się, że na pewno działało.ntpdate to program inny niż net dameon. Prawdopodobnie podczas uruchamiania NTPDate występuje błąd podczas uruchamiania, ponieważ ntpd działa na tym gnieździe.
Z linii poleceń uruchom
Możesz także odinstalować ntpd wszystkie razem (apt-get remove ntp) i dodać skrypt cron, aby używać ntpdate co godzinę.
AKTUALIZACJA
Usługa ntp prawdopodobnie nie będzie miała dla ciebie znaczącej wartości w tym systemie, więc usuń ją najpierw.
Teraz dodaj polecenie:
do
/etc/rclocal
Restart. W tym momencie powinno być dobrze.
źródło
Użyj
timedatectl
(systemowa jednostka serwisowa), aby ustawić czas.ntp
jest przestarzałe.Możesz sprawdzić czas aktualizacji za pomocą dzienników
journalctl -xe | tail
Odniesienie
man timesyncd.conf
źródło
jeśli wszystko, co chcesz zrobić, to ustawić zegar raz, to proste
źródło
Prawidłowym sposobem na to w systemie Debian / Mint / Ubuntu (lub innej pochodnej Debiana) jest posiadanie linii
w pliku
Zapewnia to, że gdy ntpd jest uruchamiany ze skryptu /etc/init.d/ntp, działa z opcją „-g”, mianowicie
aby umożliwić ntpd skorygowanie czasu systemowego, gdy jest więcej niż 1000 s poza, np. gdy czas systemowy to 1 stycznia 1970 r. przy uruchomieniu, ponieważ nie ma sprzętowego RTC.
źródło
/etc/default/ntp
, ale czas nie był zsynchronizowany.tlsdate
ustawia zegar lokalny, bezpiecznie łącząc się z TLS ze zdalnymi serwerami i wydobywając zdalny czas z bezpiecznego uzgadniania. W przeciwieństwientpdate
,tlsdate
używa TCP, na przykład podłączenie do zdalnego HTTPS lub TLS włączona obsługa i zapewnia pewną ochronę przed wrogami, które próbują karmić Cię złośliwego informacje o czasie.źródło
Zauważ, że niektóre obecne systemy oparte na Ubuntu nie używają teraz domyślnie usługi NTP. Na moim komputerze z systemem Linux Mint 19 (Ubuntu 18.04) czas mija
systemd-timesyncd
.Aby uzyskać aktualny czas po utracie synchronizacji, po prostu biegnę
Od 15.04 Ubuntu domyślnie używa systemd. Dlatego krytyczne systemy, takie jak czas, są zarządzane przez systemd. Aby znaleźć usługę, z której korzysta Twój system, uruchom coś podobnego
Dla TechJS w dniu 16.04 usługa była
ntp
. Dla mnie na Ubuntu 18.04 (Mint 19) usługa jestsystemd-timesyncd
. Co ciekawe, zalogowałem się do serwera 16.04, który mam i również z niego korzystasystemd-timesyncd
.źródło
Spróbuj użyć
-b
opcji, aby zwiększyć czas.źródło
1 Jan 00:04:11 ntpdate[2226]: the NTP socket is in use, exiting
. Myślę jednak, że próbowałem tego wcześniej,rc.local
ale to nie pomogło.ntpdate -b <ipaddress>
Dobrze,
Używam raspbian (debian wheezy) na moim malinowym pi, który nie ma hwclocka. Przydało mi się napisanie małego skryptu i uruchomienie go po uruchomieniu interfejsu internetowego, aby mieć pewność, że w momencie, gdy sieć stanie się dostępna, zegar zostanie zaktualizowany.
Najpierw sprawdź, czy masz
ntpdate
pakiet, uruchamiającMusisz dodać do swojego
/etc/network/interfaces
(na pewnoeth0
tutaj to tylko przykład):I utwórz następujący skrypt w
/usr/local/sbin/update-time.sh
(nie zapomnij, aby był wykonywalnychmod
):źródło
Algorytmy ntpd odrzucają przesunięcia próbek przekraczające 128 ms, chyba że przedział, w którym żadna [wartość bezwzględna] przesunięcia próbki nie jest mniejsza niż 128 ms, przekracza 900 sekund. Pierwsza próbka po tym, bez względu na przesunięcie, przesuwa zegar do wskazanego czasu. W praktyce zmniejsza to częstość fałszywych alarmów, gdy zegar jest błędnie zwiększany do znikomej częstotliwości.
Zwykle ntpd kończy działanie, jeśli przesunięcie przekracza limit poczytalności, który domyślnie wynosi 1000 s. Można to wyłączyć za pomocą opcji -g:
-g Zwykle ntpd kończy działanie, jeśli przesunięcie przekracza limit poczytalności, który domyślnie wynosi 1000 s. Jeśli limit poczytalności jest ustawiony na zero, nie jest przeprowadzane sprawdzanie poczytalności i dopuszczalne jest jakiekolwiek przesunięcie. Ta opcja zastępuje limit i pozwala ustawić czas na dowolną wartość bez ograniczeń; może się to jednak zdarzyć tylko raz. Następnie ntpd zakończy działanie, jeśli limit zostanie przekroczony. Tej opcji można używać z opcją -q.
oba z http://doc.ntp.org/4.1.0/ntpd.htm
-Jonathan Natale
źródło
Jeśli możesz sobie pozwolić na czas oczekiwania na synchronizację systemu, możesz użyć
ntp-wait
polecenia:źródło
Jeśli korzystasz z systemu, możesz użyć tego polecenia:
A potem czas jest aktualizowany w ciągu blisko 10-15 sekund.
Testowane na Ubuntu Mate 16.04
źródło
ntpd
intpdate
uruchamiany domyślnie przy użyciu ograniczonego portu (UDP 123). Jeśli jesteś za zaporą ogniową,ntpd
nigdy nie będzie działać, alentpdate
może działać z tą-u
opcją. Na przykład:ntpdate -u 0.ubuntu.pool.ntp.org
lubntpdate -u time.nist.gov
oba powinny działać dobrze.źródło