Frage Wie erzwinge eine Uhrupdate mit NTP?
Ich benutze Ubuntu auf einem ARM-basierten Embedded-System, dem eine batteriegestützte RTC fehlt. Die Weckzeit liegt irgendwo im Jahr 1970. Daher nutze ich den NTP-Dienst, um die Uhrzeit auf die aktuelle Uhrzeit zu aktualisieren.
Ich habe die folgende Zeile hinzugefügt /etc/rc.local
Datei:
sudo ntpdate -s time.nist.gov
Nach dem Start dauert es jedoch noch ein paar Minuten, bis die Uhrzeit aktualisiert ist. In dieser Zeit kann ich nicht effektiv arbeiten tar
und make
.
Wie kann ich eine Uhraktualisierung jederzeit erzwingen?
UPDATE 1: Das folgende (danke an Eric und Stephan) funktioniert gut von der Befehlszeile, aber es ist nicht möglich, die Uhr zu aktualisieren, wenn sie eingesetzt wird /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
Was mache ich falsch?
UPDATE 2: Ich habe versucht, den wenigen Vorschlägen zu folgen, die als Reaktion auf das erste Update kamen, aber nichts scheint den Job wirklich wie erforderlich zu erledigen. Folgendes habe ich versucht:
- Ersetzen Sie den Server durch
us.pool.ntp.org
- Verwenden Sie explizite Pfade zu den Programmen
- Entferne das
ntp
Service insgesamt und verlassen Sie einfach sudo ntpdate ...
im rc.local
- Entferne das
sudo
von dem obigen Befehl in rc.local
Mit dem oben genannten beginnt die Maschine immer noch bei 1970. Allerdings, wenn Sie dies von der Befehlszeile einmal eingeloggt (über ssh
), wird die Uhr aktualisiert, sobald ich aufrufe ntpdate
.
Das letzte, was ich getan habe, war das zu entfernen rc.local
und rufe einen Anruf an ntpdate
in meinem .bashrc
Datei. Dies aktualisiert die Uhr wie erwartet, und ich bekomme die wahre aktuelle Zeit, sobald die Eingabeaufforderung verfügbar ist.
jedochDies bedeutet, dass, wenn der Computer eingeschaltet ist und kein Benutzer angemeldet ist, die Uhrzeit nie aktualisiert wird. Ich kann natürlich das neu installieren ntp
Service also zumindest die Uhr wird innerhalb weniger Minuten vom Startup aktualisiert, aber dann sind wir wieder bei Platz 1.
Also, gibt es einen Grund, warum die ntpdate
Befehl in rc.local
führt die erforderliche Aufgabe nicht aus, während Sie dies tun .bashrc
funktioniert gut?
324
2018-02-13 21:58
Ursprung
Antworten:
Wahrscheinlich der ntp
Service läuft, deshalb ntpdate
kann den Socket (Port 123 UDP) nicht öffnen und eine Verbindung zum NTP-Server herstellen.
Versuchen Sie es über die Befehlszeile:
sudo service ntp stop
sudo ntpdate -s time.nist.gov
sudo service ntp start
Wenn du das einbringen willst /etc/rc.local
benutze folgendes:
( /etc/init.d/ntp stop
until ping -nq -c3 8.8.8.8; do
echo "Waiting for network..."
done
ntpdate -s time.nist.gov
/etc/init.d/ntp start )&
284
2018-02-13 23:13
Anstelle von ntpdate (das ist veraltet), benutzen
sudo service ntp stop
sudo ntpd -gq
sudo service ntp start
Das -gq
weist den ntp-Daemon an, die Zeit unabhängig vom Offset zu korrigieren (g
) und sofort verlassen (q
) nach dem Einstellen der Uhrzeit.
427
2018-02-14 12:32
Verwenden Sie sntp, um die Uhrzeit sofort festzulegen. Beispielsweise:
sudo sntp -s 24.56.178.140
Die Zahlen hinter -s können ein beliebiger NTP-Zeitserver sein, dieser ist NIST in Ft. Collins, Colorado.
49
2017-11-08 01:00
Wie andere bereits erwähnt haben, besteht die beste Lösung darin, ntpd anzuweisen, den Überschreitungsschwellenwert zu ignorieren, der standardmäßig 1000 Sekunden beträgt. Sie können den Panikschwellenwert auf zwei Arten konfigurieren:
- bearbeiten
/etc/default/ntp
und stellen Sie sicher, dass die Option -g vorhanden ist.
- Bearbeiten Sie /etc/ntp.conf und platzieren Sie
tinker panic 0
oben
Bis jetzt ist das im Wesentlichen das, was andere empfohlen haben, aber es gibt noch einen weiteren Schritt, den du meiner Meinung nach tun solltest. Installiere das Programm fake-hwclock:
# apt-get install fake-hwclock
fake-hwclock: Save/restore system clock on machines without working RTC hardware
Some machines don't have a working realtime clock (RTC) unit, or no
driver for the hardware that does exist. fake-hwclock is a simple set
of scripts to save the kernel's current clock periodically (including
at shutdown) and restore it at boot so that the system clock keeps at
least close to realtime. This will stop some of the problems that may
be caused by a system believing it has travelled in time back to
1970, such as needing to perform filesystem checks at every boot.
On top of this, use of NTP is still recommended to deal with the fake
clock "drifting" while the hardware is halted or rebooting.
Wenn fake-hwclock installiert ist, wird Ihre Maschine nicht anfangen zu denken, dass es 1970 wieder ist. Wenn Ihr Computer hochfährt, wird seine Uhr auf den Zeitstempel gesetzt, den fake-hwclock während des letzten Neustarts / Herunterfahrens geschrieben hat. Dies bedeutet, dass Sie eine etwas korrekte Uhr haben können, falls beim Booten Netzwerkprobleme auftreten.
37
2018-04-03 22:11
ntpdate ist ein Programm, das sich vom net dameon unterscheidet. NTPDate ist wahrscheinlich beim Booten fehlgeschlagen, weil ntpd auf diesem Socket läuft.
Führen Sie in der Befehlszeile aus
# sudo service ntp stop ; sudo ntpdate -s time.nist.gov ; sudo service ntp start
Sie könnten auch ntpd alle zusammen deinstallieren (apt-get remove ntp) und ein cron-Skript hinzufügen, um ntpdate jede Stunde oder so zu verwenden.
AKTUALISIEREN
NTP-Dienst wird wahrscheinlich keinen sinnvollen Wert für Sie auf diesem System haben, entfernen Sie also zuerst.
# sudo apt-get remove ntp
Fügen Sie nun den Befehl hinzu:
ntpdate -sb time.nist.gov
zu /etc/rclocal
Starten Sie neu. Sollte zu diesem Zeitpunkt gut sein.
12
2018-02-13 23:07
rdate -s tick.greyware.com
Wenn Sie nur einmal die Uhr einstellen möchten, einfach
8
2018-02-26 22:57
Der richtige Weg, dies auf einem Debian / Mint / Ubuntu (oder einem anderen Debian-Derivat) System zu tun, ist die Zeile zu haben
NTPD_OPTS="-g"
in der Datei
/etc/default/ntp
Dadurch wird sichergestellt, dass beim Starten von ntpd aus dem Script /etc/init.d/ntp das Skript mit der Option "-g" ausgeführt wird
start-stop-daemon --start --quiet --oknodo --pidfile /var/run/ntpd.pid --startas /usr/sbin/ntpd -- -p /var/run/ntpd.pid -g -u 124:128
Damit ntpd die Systemzeit korrigieren kann, wenn mehr als 1000 s vergangen sind, z. B. wenn die Systemzeit beim Start auf den 1. Januar 1970 fällt, da keine Hardware-RTC vorhanden ist.
7
2018-04-03 11:20
Versuchen Sie es mit dem -b
Option, um die Zeit zu verschieben.
4
2018-02-13 22:18
tlsdate
Setzt die lokale Uhr durch sichere Verbindung mit TLS zu Remote-Servern und Extrahieren der Remote-Zeit aus dem sicheren Handshake. nicht wie
ntpdate
, tlsdate
verwendet TCP, um beispielsweise eine Verbindung zu einem entfernten HTTPS oder TLS herzustellen
Service aktiviert, und bietet einen gewissen Schutz gegen Gegner, die versuchen
Feed Sie bösartige Zeitinformationen.
$ tlsdate -V -n -H encrypted.google.com
4
2018-02-23 11:52