Zegar Ubuntu jest wyłączony o około pół godziny:
Gdzie mogę nawet zacząć to rozwiązywać?
Podobno jest ustawiony „automatycznie z Internetu”. Jak mogę sprawdzić, czy „Internet” wie, która jest godzina?
Detale
Ubuntu miał dużo czasu na komunikację z Internetem:
$ date; uptime
Fri May 18 05:56:00 PDT 2012
05:56:00 up 12 days, 10:48, 2 users, load average: 0.61, 0.96, 1.15
Wydaje mi się, że ten serwer czasu znaleziony podczas wyszukiwania w sieci zna prawidłowy czas:
$ date; ntpdate -q north-america.pool.ntp.org
Fri May 18 05:56:09 PDT 2012
server 208.38.65.37, stratum 2, offset 1752.625337, delay 0.10558
server 46.166.138.172, stratum 2, offset 1752.648597, delay 0.10629
server 205.189.158.228, stratum 3, offset 1752.672466, delay 0.11829
18 May 05:56:18 ntpdate[29752]: step time server 208.38.65.37 offset 1752.625337 sec
Nie zgłoszono żadnych błędów związanych z NTP:
$ grep -ic ntp /var/log/syslog
0
Po ponownym uruchomieniu czas został automatycznie skorygowany, a w /var/log/syslog
:
May 18 17:58:12 aux ntpdate[1891]: step time server 91.189.94.4 offset 1838.497277 sec
Dziennik przesunięcia zgłaszanego przez ntpdate pokazuje, że zegar dryfuje o około 9 sekund co godzinę:
$ while true; do ntpdate-debian -q | tail -n 1 >> 'drift.log'; sleep 16m; done
^C
$ r -e '
attach(read.table("drift.log", header=FALSE))
clock <- as.POSIXct(paste(V1, V2, V3), format="%d %b %H:%M:%S")
fit <- lm(V10~clock)
png("drift.png")
plot(clock, V10, xlab="Clock time", ylab="Time server offset (s)")
abline(fit)
mtext(sprintf("Drift rate: %.2f s/hr", fit$coefficients[[2]]*3600))
'
Odpowiedzi:
ntp dobrze radzi sobie z ustawieniem komputera we właściwym czasie i robi to bez uruchamiania go wstecz - co byłoby niekorzystne dla niektórych programów, które możesz uruchamiać.
Nie tylko ustawia czas, ale dokonuje ciągłych zmian w sposobie, w jaki komputer utrzymuje czas, dzięki czemu jego czas jest nie tylko odpowiedni w jednej chwili, ale pozostaje zbliżony do czasu rzeczywistego (w ciągu kilkudziesięciu milisekund, nie dziesiątek minut) . Reguluje zarówno fazę (czas), jak i szybkość (szybkość, z jaką zegar „tyka”). ntp nigdy nie powoduje, że zegar biegnie wstecz. Ustalenie szybkości tykania zegara po ponownym uruchomieniu może zająć dużo czasu, więc ntp śledzi dryft w pliku o nazwie /var/lib/ntp/ntp.drift. Ponieważ nie używasz NTTP, nic takiego się nie dzieje.
ntp nie jest tak popularny, jak kiedyś, ponieważ śpiące laptopy i komputery stacjonarne, a maszyny wirtualne zatrzymują go na jakiś czas. Został zaprojektowany tak, aby uruchamiał się od czasu do czasu według własnego harmonogramu na komputerze, który działa cały czas, oraz w prawdziwym świecie, w którym czas jest ciągły. Prawdopodobnie dlatego nie jest domyślnie instalowany na nowoczesnej stacji roboczej. [Zobacz Vmware ]
Zamiast tego uruchamiany jest program ntpdate po uruchomieniu interfejsu sieciowego. Po przebudzeniu uśpiony laptop ponownie ustanawia połączenie sieciowe, uruchamiany jest program ntpdate , a czas znów jest poprawny. Jeśli zegar sprzętowy maszyny jest dość dokładny, a sieć jest dość często podnoszona i wyłączana, to na ogół wystarcza dla większości ludzi.
Z jakiegoś powodu czas ntpdate nie zawsze działa. W takim przypadku użyj ntpdate-debian . Składnia for.mer to coś w rodzaju ntpdate ntp.ubuntu.com , dla tego drugiego to ntpdate-debian
W przypadku braku jednej z tych rzeczy, ntp jest lepszym sposobem na zachowanie czasu.
Systemy są zaprojektowane tak, aby co jakiś czas przerywały odliczanie czasu i aktualizowały wyobrażenie o czasie za każdym razem. Dopóki zegar sprzętowy działa zgodnie ze specyfikacją. czas nie płynie za bardzo. Jeśli zegar sprzętowy nie jest, czas będzie płynął dłużej (wszystkie takie zegary będą dryfować, z tego samego powodu, co Twój zegarek na rękę lub zegar sterowany baterią. Zegary podłączone do ściany są synchronizowane z czasem przez częstotliwość i fazę utrzymywaną przez Twoja firma energetyczna).
Większość timerów komputerowych jest kontrolowanych przez kryształowo sterowany obwód oscylatora w jego obwodach scalonych. Pomimo kryształu działają szybciej i wolniej w zależności od środowiska, głównie temperatury. Jeśli nie masz zainstalowanego oprogramowania do synchronizacji czasu, o którym nie wiemy, powiedziałbym, że zegar twojego systemu jest wyłączony.
Gdybyś miał biec ntp przez dzień lub dwa, zapisywałoby to informacje w /var/lib/ntp/ntp.drift, które wskazywałyby, jak bardzo musiałby dostosować szybkość, z jaką twój system operacyjny przyspiesza na przerwanie, aby dopasuj częstotliwość zegara sprzętowego do czasu rzeczywistego przesyłanego przez Internet. Utrzymanie tego samego pliku i po prostu uruchomienie i zatrzymanie ntp po minucie (zakładając, że plik /var/lib/ntp/ntp.drift pozostanie niezmieniony) może wiele zrobić, aby to naprawić, jeśli zestawy odchyleń zegara ntp pozostaną później NTTP się kończy. Nie jestem pewien tego szczegółu.
Podejrzewam, że wartość przechowywana przez ntp w /var/lib/ntp/ntp.drift jest znacznie inna niż moja.
Jeśli jednak ten komputer działa cały czas, najlepiej jest zainstalować program NTTP i pozwolić mu działać. Zobacz pozostałe odpowiedzi, aby uzyskać szczegółowe informacje na temat uzyskania odpowiedniego czasu przed jego uruchomieniem. biegnę ntp na pulpicie i ntpdate na moim laptopie.
Interesująca możliwa alternatywa, adjtimex, jest wymieniona w tej odpowiedzi przez nealmcb.
Jeśli Twój system nie działa cały czas, działa dobrym pomysłem jest ntpdate podczas rozruchu.
Ostrzeżenie, niektóre programy mogą wystraszyć, jeśli czas komputera cofnie się. Uruchamianie ntpdate po rozruchu może to spowodować.
Jeden problem, to może być problem: jak pamiętam, ntp spodziewa się, że czas nie będzie zbyt daleko. Jeśli tak, starając się działać zachowawczo, ntp w ogóle nie dostosuje czasu. Jeśli znajdujesz się w takiej sytuacji, sensowne jest zrobienie obu - uruchom ntpdate podczas rozruchu, aby uzyskać czas zainicjowany we właściwym czasie, a następnie pozwól, aby ntp uruchomił go, aby zapewnić dokładność pomiaru czasu. W szczególności zła bateria płyty głównej może powodować ten błąd, podobnie jak uruchamianie komputera, który był wyłączony przez długi czas.
źródło
man rtc
Strona mówi: „RTCs nie należy mylić z zegarem systemowym, który jest utrzymywany przez zegar oprogramowanie jądra i wykorzystywane do realizacji gettimeofday (2) ...” Nie wiem, czy zegar systemowy jest związany z zegarem FSB . Patrząc na konfigurację jądra, najnowsze jądro Ubuntu i386 precyzyjnie aktualizuje zegar systemowy na 250Hz. Dziękuję za komentarz!- Zwykle czas jest synchronizowany tylko raz przy każdym uruchomieniu lub wybudzeniu z trybu uśpienia
Nie, serwer czasu Ubuntu jest poprawny i automatycznie ustawia z niego czas.
Problem polega na tym, że zwykle występuje tylko raz przy każdym uruchomieniu (a ściślej mówiąc, przy każdym uruchomieniu interfejsu sieciowego - od wyłączenia, uśpienia lub hibernacji). Biorąc pod uwagę czas dostępności, można bezpiecznie stwierdzić, że nie był zsynchronizowany przez ponad tydzień. Z jakiegoś powodu zegar systemowy działa z pewną szybkością.
- Skonfiguruj cogodzinne
cron
zadanie synchronizacji, jeśli nie uruchamiasz się często lub serwer / pulpit nigdy nie przechodzi w tryb uśpieniaNajlepiej założyć cron-zadanie, powiedziałbym, że co godzinę, jeśli chcesz bardzo precyzyjnego czasu. Najłatwiej to zrobić:
sudo editor /etc/cron.hourly/ntpsync
Dodaj następujące wiersze:
sudo chmod +x /etc/cron.hourly/ntpsync
Możesz włożyć to
/etc/cron.daily
zamiast tego, jeśli chcesz, raz dziennie.źródło
Może się to zdarzyć, jeśli zainstalowałeś demona czasu NTTP, a czas na twoim komputerze jest zbyt daleko, aby można go było szybko poprawić.
Aby to naprawić, otwórz terminal i zrób to
Co to robi:
Jeśli nie masz zainstalowanego NTTP, zrób to z
Aktualizacja: Używanie narzędzia ntpdate w zadaniu cron, zgodnie z zaleceniami, prowadzi do subtelnych problemów.
Ntpdate sprawi, że czas będzie „skakał” co godzinę. Użycie ntp pozwala uniknąć tego problemu, ponieważ dostosuje czas, pochylając zegar. Ponadto, chociaż wybór serwera NTTP w sąsiedztwie daje jeszcze wyższą dokładność, nie jest to konieczne. Domyślny plik konfiguracyjny NTTP zawiera kilka serwerów, a serwer automatycznie kompensuje wszelkie opóźnienia.
Konkluzja: - użyj ntp - jeśli jesteś daleko, zamknij ntp, uruchom raz ntpdate i zrestartuj ntp.
źródło
/etc/init.d/ntp
nie istnieje Jest to dość nowa instalacja Ubuntu 12.04 i nie zmieniłem celowo niczego związanego z czasem.Miałem podobny problem i był spowodowany przez coś w zaporze. Na koniec dodałem croniczne zadanie cron, ale dodałem
-u
argument,ntpdate
aby zmusić go do używania standardowego portu.Mój problem był spowodowany
ntpdate
faktem, że Ubuntu nie sprawdzał, czy działa, ale automatycznie zakładał, że zadziała.źródło