Ubuntus Uhr ist um eine halbe Stunde abgestellt:
Wo beginne ich überhaupt mit der Fehlerbehebung?
Es wird angeblich "automatisch aus dem Internet" eingestellt. Wie kann ich überprüfen, ob "das Internet" weiß, wie spät es ist?
Einzelheiten
Ubuntu hatte viel Zeit, um mit dem Internet zu kommunizieren:
$ 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
Dieser Zeitserver, den ich über eine Websuche gefunden habe, scheint die richtige Zeit zu kennen:
$ 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
Es gibt keine gemeldeten Fehler im Zusammenhang mit NTP:
$ grep -ic ntp /var/log/syslog
0
Nach dem Neustart wurde die Zeit automatisch korrigiert und Folgendes erschien in /var/log/syslog
:
May 18 17:58:12 aux ntpdate[1891]: step time server 91.189.94.4 offset 1838.497277 sec
Ein Protokoll des von ntpdate gemeldeten Versatzes zeigt, dass die Uhr jede Stunde um etwa 9 Sekunden abweicht:
$ 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))
'
Antworten:
ntp ist gut darin, Ihren Computer auf den richtigen Zeitpunkt einzustellen, und das, ohne ihn jemals rückwärts laufen zu lassen - was für einige Programme, die Sie möglicherweise ausführen , eine schlechte Sache wäre.
Sie stellt nicht nur die Uhrzeit ein, sondern nimmt auch kontinuierliche Anpassungen an der Uhrzeit Ihres Computers vor, sodass die Uhrzeit nicht nur zu einem bestimmten Zeitpunkt stimmt, sondern auch in der Nähe der Echtzeit bleibt (innerhalb von Dutzenden von Millisekunden, nicht Dutzenden von Minuten). . Es stellt sowohl die Phase (die Zeit) als auch die Rate (wie schnell die Uhr "tickt") ein. ntp lässt die Uhr niemals rückwärts laufen. Es kann eine Weile dauern, bis festgelegt ist, wie schnell die Uhr nach einem Neustart ankreuzt. Daher verfolgt ntp die Abweichung in einer Datei mit dem Namen /var/lib/ntp/ntp.drift. Da Sie ntp nicht ausführen, geschieht nichts davon.
ntp ist nicht mehr so beliebt wie früher, da Laptops und Desktops nicht mehr verwendet werden können und virtuelle Maschinen die Ausführung zeitweise unterbinden. Es ist so konzipiert, dass es von Zeit zu Zeit nach eigenem Zeitplan auf einem Computer ausgeführt wird, der ständig ausgeführt wird, und in der realen Welt, in der die Zeit kontinuierlich ist. Das ist wahrscheinlich der Grund, warum es auf der modernen Workstation nicht standardmäßig installiert ist. [Vmware finden Sie hier]
Stattdessen wird ntpdate ausgeführt, wenn die Netzwerkschnittstelle aufgerufen wird. Wenn ein schlafender Laptop aufgeweckt wird, wird die Netzwerkverbindung wiederhergestellt, ntpdate wird ausgeführt und die Uhrzeit ist wieder korrekt. Wenn die Hardware-Uhr der Maschine ziemlich genau ist und das Netzwerk ziemlich oft hoch- und heruntergefahren wird, ist dies für die meisten Menschen im Allgemeinen gut genug.
Aus irgendeinem Grund läuft das Lager ntpdate nicht immer. Verwenden Sie in diesem Fall stattdessen ntpdate-debian . Die Syntax für den Former ist so etwas wie ntpdate ntp.ubuntu.com , für den letzteren ist es ntpdate-debian
Wenn eines dieser Dinge fehlt, ist ntp ein besserer Weg, um die Zeit zu behalten.
Systeme sind so konzipiert, dass sie von Zeit zu Zeit einen Timer-Interrupt einleiten und dessen Vorstellung von der Zeit jedes Interrupts aktualisieren. Solange der Hardware-Timer gemäß Spezifikation läuft. Die Zeit driftet nicht zu sehr. Wenn der Hardware - Timer nicht aktiviert ist, wird die Zeit stärker verschoben (alle diese Uhren werden aus dem gleichen Grund wie Ihre Armbanduhr oder batteriegesteuerte Uhr verschoben). In die Wand gesteckte Uhren werden mit der Zeit durch die Frequenz und Phase synchronisiert, die von gehalten werden Ihr Energieversorgungsunternehmen).
Die meisten Computer-Timer werden von einer quarzgesteuerten Oszillatorschaltung auf ihren integrierten Schaltkreisen gesteuert. Trotz des Kristalls laufen sie je nach Umgebungstemperatur schneller und langsamer. Sofern Sie keine Zeitsynchronisierungssoftware installiert haben, die wir nicht kennen, würde ich sagen, dass die Uhr Ihres Systems nicht den Spezifikationen entspricht.
Wenn Sie ntp für ein oder zwei Tage ausführen, werden Informationen in /var/lib/ntp/ntp.drift gespeichert, aus denen hervorgeht, um wie viel die Geschwindigkeit angepasst werden muss, mit der die Zeit Ihres Betriebssystems pro Interrupt voranschreitet, um Passen Sie Ihre Hardware-Taktrate an die Echtzeit an, die über das Internet übertragen wird. Wenn Sie die Datei unverändert lassen und erst nach einer Minute ntp starten und stoppen (vorausgesetzt, Sie behalten die Datei /var/lib/ntp/ntp.drift unverändert bei), kann dies u NTP endet. Ich bin mir dieses Details nicht sicher.
Ich vermute, der Wert, den ntp in /var/lib/ntp/ntp.drift speichern würde, unterscheidet sich erheblich von meinem.
Wenn diese Maschine jedoch die ganze Zeit läuft, ist es am besten, ntp zu installieren und es tun zu lassen. In den anderen Antworten finden Sie Einzelheiten dazu, wie Sie die Uhrzeit genau vor dem Start ermitteln können. Ich starte ntp auf meinem Desktop und ntpdate auf meinem Laptop.
Eine interessante mögliche Alternative, adjtimex, wird in dieser Antwort von nealmcb erwähnt.
Wenn Ihr System nicht ständig ausgeführt wird, bietet es sich an , ntpdate beim Systemstart auszuführen .
Warnung: Manche Software kann durchdrehen, wenn die Zeit des Computers verrutscht. Das Ausführen von ntpdate nach dem Start kann dazu führen, dass dies auftritt.
Man muss wissen, dass dies ein Problem sein kann: Wie ich mich erinnere, erwartet ntp, dass die Zeit nicht zu weit entfernt ist. Wenn dies der Fall ist, wird ntp die Zeit nicht anpassen, wenn es versucht, konservativ zu handeln . Wenn Sie in dieser Situation sind, ist es sinnvoll, beides zu tun: Führen Sie ntpdate beim Booten aus, um die Zeit zum richtigen Zeitpunkt zu initialisieren, und lassen Sie dann ntp laufen, um sie am Laufen zu halten und eine genaue Zeitmessung zu gewährleisten. Insbesondere eine schlechte Batterie des Motherboards kann diesen Fehler verursachen, ebenso wie das Booten eines Computers, der lange ausgeschaltet war.
quelle
man rtc
Seite heißt es: "RTCs sollten nicht mit der Systemuhr verwechselt werden, die vom Kernel verwaltet wird und zur Implementierung von gettimeofday (2) verwendet wird." Sie wissen nicht, ob die Systemuhr mit der FSB-Uhr zusammenhängt . In der Kernel-Konfiguration des neuesten Ubuntu-präzisen i386-Kernels wird die Systemuhr auf 250 Hz aktualisiert. Danke für den Kommentar!- Normalerweise wird die Zeit nur einmal bei jedem Start oder Wakeup-from-Sleep synchronisiert
Nein, Ubuntus Zeitserver ist korrekt und stellt die Zeit automatisch ein.
Das Problem ist, dass es normalerweise nur einmal bei jedem Systemstart auftritt (genauer gesagt, jedes Mal , wenn eine Netzwerkschnittstelle gestartet wird - ob nach dem Herunterfahren, dem Energiesparmodus oder dem Ruhezustand). Anhand Ihrer Betriebszeit kann man mit Sicherheit sagen, dass die Synchronisierung nicht länger als eine Woche zurückliegt. Und Ihre Systemuhr läuft aus irgendeinem Grund etwas schnell.
- Richten Sie einen stündlichen
cron
Job für die Synchronisierung ein, wenn Sie nicht häufig neu starten oder Ihr Server / Desktop nicht in den Ruhezustand wechseltIhre beste Wette ist es, einen Cron-Job einzurichten, ich würde sagen, stündlich, wenn Sie eine supergenaue Zeit wollen. Der einfachste Weg dies zu tun ist:
sudo editor /etc/cron.hourly/ntpsync
Fügen Sie die folgenden Zeilen hinzu:
sudo chmod +x /etc/cron.hourly/ntpsync
Sie können dies
/etc/cron.daily
stattdessen eingeben, wenn Sie möchten, einmal pro Tag.quelle
Dies kann passieren, wenn Sie den NTP-Zeit-Daemon installiert haben und die Zeit auf Ihrem Computer zu weit entfernt ist, um eine schnelle Korrektur durchzuführen.
Um das Problem zu beheben, öffne ein Terminal und mache
Was dies bewirkt:
Wenn Sie ntp nicht installiert haben, machen Sie es mit
Update: Die Verwendung von ntpdate in einem Cron-Job, wie hier empfohlen, führt zu subtilen Problemen.
Das ntpdate bewirkt, dass die Zeit jede Stunde oder so springt. Die Verwendung von ntp vermeidet dieses Problem, da die Zeit durch Verdrehen der Uhr angepasst wird. Auch wenn die Auswahl eines NTP-Servers in der Nachbarschaft eine noch höhere Genauigkeit bietet, ist dies nicht erforderlich. Die Standard-NTP-Konfigurationsdatei enthält mehrere Server, und der Server gleicht Verzögerungen automatisch aus.
Fazit: - NTP verwenden - Wenn Sie weit davon entfernt sind, fahren Sie NTP herunter, führen Sie NTPdate einmal aus und starten Sie NTP neu.
quelle
/etc/init.d/ntp
existiert nicht. Dies ist eine relativ neue Ubuntu 12.04-Installation, und ich habe nichts in Bezug auf die Zeit absichtlich geändert.Ich hatte ein ähnliches Problem und es wurde von etwas in der Firewall verursacht. Am Ende habe ich den stündlichen Cron- Job hinzugefügt, aber das
-u
Argument hinzugefügtntpdate
, damit er einen Nicht-Standard-Port verwendet.Mein Problem wurde dadurch verursacht, dass Ubuntu nicht prüfte, ob es
ntpdate
funktioniert, sondern automatisch davon ausging, dass es funktionieren würde.quelle