Ich verwende Ubuntu auf einem ARM-basierten Embedded-System, dem eine batteriegepufferte Echtzeituhr fehlt. Die Weckzeit liegt irgendwo im Jahr 1970. Daher verwende ich den NTP-Dienst, um die Zeit auf die aktuelle Zeit zu aktualisieren.
Ich habe der /etc/rc.local
Datei die folgende Zeile hinzugefügt :
sudo ntpdate -s time.nist.gov
Nach dem Start dauert es jedoch noch einige Minuten, bis die Zeit aktualisiert ist. Während dieser Zeit kann ich nicht effektiv mit tar
und arbeiten make
.
Wie kann ich eine Aktualisierung der Uhr zu einem bestimmten Zeitpunkt erzwingen?
UPDATE 1: Das Folgende (danke an Eric und Stephan) funktioniert einwandfrei von der Kommandozeile aus, kann aber die Uhr beim Einfügen nicht aktualisieren /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 eingegangen sind, aber nichts scheint die Aufgabe tatsächlich wie erforderlich zu erledigen. Folgendes habe ich versucht:
- Tauschen Sie den Server gegen aus
us.pool.ntp.org
- Verwenden Sie explizite Pfade zu den Programmen
- Entfernen Sie den
ntp
Service insgesamt und lassen Sie nursudo ntpdate ...
inrc.local
- Entfernen Sie den
sudo
aus dem obigen Befehl inrc.local
Unter Verwendung der obigen Einstellungen startet der Computer immer noch um 1970. Wenn Sie dies jedoch über die Befehlszeile tun, nachdem Sie sich (über ssh
) angemeldet haben , wird die Uhr aktualisiert, sobald ich sie aufrufe ntpdate
.
Das letzte, was ich tat, war, das zu entfernen rc.local
und einen Anruf ntpdate
in meine .bashrc
Akte zu setzen. Dadurch wird die Uhr wie erwartet aktualisiert und die aktuelle Uhrzeit wird angezeigt, sobald die Eingabeaufforderung verfügbar ist.
Dies bedeutet jedoch , dass die Zeit nie aktualisiert wird, wenn der Computer eingeschaltet ist und kein Benutzer angemeldet ist. Ich kann den ntp
Dienst natürlich neu installieren , damit die Uhr innerhalb weniger Minuten nach dem Start aktualisiert wird, aber dann sind wir wieder auf Platz 1.
Gibt es einen Grund, warum das Platzieren des ntpdate
Befehls in rc.local
nicht die erforderliche Aufgabe ausführt, während dies in .bashrc
einwandfrei funktioniert?
ntpdate -s ntp.ubuntu.com
[1]: askubuntu.com/a/81301/130162sudo
In /etc/rc.locale müssen keine Dateien verwendet werden. Sie werden bereits als root ausgeführt.timedatectl
, aber askubuntu.com/questions/832646/…Antworten:
Wahrscheinlich wird der
ntp
Dienst ausgeführt, daherntpdate
kann der Socket (Port 123 UDP) nicht geöffnet und keine Verbindung zum NTP-Server hergestellt werden.Versuchen Sie es über die Befehlszeile:
Wenn Sie dies verwenden möchten, gehen Sie wie
/etc/rc.local
folgt vor:quelle
service
von rc.local und cron zu starten, aber ich konnte es mit /etc/init.d/xxx reparieren. Eigentlich glaube ich, dass Sie nicht den vollständigen Pfadntpdate
angeben müssen. Ich verwende gern vollständige Pfade in Skripten, um sicherzugehen, dass die richtige Datei gefunden wird.us.pool.ntp.org
reaktionsschneller ist.-u
Option müssen Sie den NTP-Dienst nicht beenden:sudo ntpdate -u time.nist.gov
Verwenden Sie anstelle von ntpdate (das veraltet ist )
Das
-gq
weist den ntp-Daemon an, die Zeit unabhängig vom Offset (g
) zu korrigieren und sofort (q
) nach dem Einstellen der Zeit zu beenden .quelle
ntpd
ich die Manpage lese, bin ich mir nicht sicher, wie dies ein Update erzwingt?sudo ntpd -gq
nicht verlassen! Ich bin am 14.10 und ich muss STRG + C drücken, um fortzufahren ... oder wie lange soll es dauern?sudo service ntp...
auf ändernsudo service ntpd...
.Verwenden Sie sntp, um die Uhrzeit sofort einzustellen. Zum Beispiel:
Die Zahlen nach -s können ein beliebiger NTP-Zeitserver sein, der in Ft NIST ist. Collins, Colorado.
quelle
Wie bereits erwähnt, besteht die beste Lösung darin, ntpd anzuweisen, die Panikschwelle zu ignorieren, die standardmäßig 1000 Sekunden beträgt. Sie können den Panikschwellenwert auf zwei Arten konfigurieren:
/etc/default/ntp
und stellen Sie sicher, dass die Option -g vorhanden ist.tinker panic 0
obenBisher ist dies im Wesentlichen das, was andere empfohlen haben, es gibt jedoch noch einen weiteren Schritt, den Sie meiner Meinung nach unternehmen sollten. Installieren Sie das Fake-Hwclock-Programm:
Wenn Sie eine gefälschte Uhr installiert haben, startet Ihre Maschine nicht mehr und denkt, dass es wieder 1970 ist. Wenn Ihr Computer hochfährt, stellt er seine Uhr auf den Zeitstempel ein, den die falsche Uhr beim letzten Neustart / Herunterfahren geschrieben hat. Dies bedeutet, dass Sie eine etwas korrekte Uhr haben können, falls beim Booten Netzwerkprobleme auftreten.
quelle
-g
schien nichts für mich zu tun (auf der Kommandozeile habe ich nicht/etc/default/ntp
), sonderntinker panic 0
zuntp.conf
arbeitentinker panic 0
scheint aber definitiv geklappt zu haben.ntpdate ist ein anderes Programm als net dameon. Wahrscheinlich tritt beim Booten ein Fehler bei NTPDate auf, da ntpd auf diesem Socket ausgeführt wird.
Führen Sie von der Befehlszeile aus
Sie können auch ntpd alle zusammen deinstallieren (apt-get remove ntp) und ein Cron-Skript hinzufügen, um etwa jede Stunde ntpdate zu verwenden.
AKTUALISIEREN
Der ntp-Dienst wird auf diesem System wahrscheinlich keinen sinnvollen Wert für Sie haben, entfernen Sie ihn also zuerst.
Fügen Sie nun den Befehl hinzu:
zu
/etc/rclocal
Starten Sie neu. Sollte an diesem Punkt gut sein.
quelle
Verwenden Sie
timedatectl
(systemd service unit), um die Uhrzeit einzustellen.ntp
ist veraltet.Sie können überprüfen, ob die Uhrzeit aktualisiert wurde, indem Sie die Protokolle mit lesen
journalctl -xe | tail
Referenz
man timesyncd.conf
quelle
Wenn Sie nur einmal die Uhr stellen möchten, ist dies ganz einfach
quelle
Der richtige Weg, dies auf einem Debian / Mint / Ubuntu-System (oder einem anderen Debian-Derivat) zu tun, besteht darin, die Leitung zu haben
in der Datei
Auf diese Weise wird sichergestellt, dass ntpd beim Start über das Skript /etc/init.d/ntp mit der Option "-g" ausgeführt wird
Damit kann ntpd die Systemzeit korrigieren, wenn sie mehr als 1000 s abläuft, z. B. wenn die Systemzeit beim Start am 1. Januar 1970 liegt, da keine Hardware-RTC vorhanden ist.
quelle
/etc/default/ntp
, aber die Zeit war nicht synchronisiert.tlsdate
Stellt die lokale Uhr ein, indem eine sichere Verbindung mit TLS zu Remote-Servern hergestellt und die Remote-Zeit aus dem sicheren Handshake extrahiert wird. Im Gegensatz zuntpdate
,tlsdate
verwendet TCP, zum Beispiel an einen entfernten HTTPS verbinden oder TLS aktiviert Service und bietet einen gewissen Schutz gegen Gegner , die versuchen , Ihnen Informationen böswillige Zeit zu füttern.quelle
Beachten Sie, dass einige aktuelle Ubuntu-basierte Systeme standardmäßig nicht einmal den NTP-Dienst verwenden. Auf meinem Linux Mint 19 (Ubuntu 18.04) Rechner wird die Zeit von gehalten
systemd-timesyncd
.Um eine aktuelle Zeit zu erhalten, nachdem die Synchronisation verloren gegangen ist, renne ich einfach
Seit 15.04 verwendet Ubuntu standardmäßig systemd. Daher werden kritische Systeme wie die Zeit über systemd verwaltet. Um herauszufinden, welchen Dienst Ihr System verwendet, führen Sie etwa Folgendes aus
Für TechJS am 16.04 war der Service
ntp
. Für mich auf Ubuntu 18.04 (Mint 19) ist der Servicesystemd-timesyncd
. Interessanterweise habe ich mich bei einem 16.04-Server angemeldet, der auch verwendet wirdsystemd-timesyncd
.quelle
Versuchen Sie es mit der
-b
Option, um die Zeit zu erhöhen.quelle
1 Jan 00:04:11 ntpdate[2226]: the NTP socket is in use, exiting
. Allerdings denke ich, dass ich das schon mal probiert habe,rc.local
aber es hat nicht geholfen.ntpdate -b <ipaddress>
Gut,
Auf meinem Himbeer-Pi läuft ein Raspbian (Debian Wheezy), der nicht über die Uhr verfügt. Ich fand es praktisch, ein kleines Skript zu schreiben und es auszuführen, nachdem meine Internetschnittstelle aktiv ist, sodass ich sicher bin, dass die Uhr aktualisiert wird, sobald das Netzwerk verfügbar ist.
Überprüfen Sie zunächst, ob Sie das
ntpdate
Paket haben, indem Sie ausführenSie müssen Folgendes in Ihre hinzufügen
/etc/network/interfaces
(eth0
hier ist sicherlich nur ein Beispiel):Und erstellen Sie das folgende Skript in
/usr/local/sbin/update-time.sh
(vergessen Sie nicht, es ausführbar zu machenchmod
):quelle
Die ntpd-Algorithmen verwerfen Sample-Offsets, die 128 ms überschreiten, es sei denn, das Intervall, in dem kein [absoluter Wert von] Sample-Offset kleiner als 128 ms ist, überschreitet 900s. Das erste Sample danach, unabhängig vom Offset, stellt die Uhr auf die angegebene Zeit ein. In der Praxis reduziert dies die Fehlalarmrate, wenn die Uhr fehlerhaft verschoben wird, auf ein verschwindend geringes Vorkommen.
Normalerweise wird ntpd beendet, wenn der Versatz die Vernunftsgrenze überschreitet, die standardmäßig 1000 s beträgt. Dies kann mit der Option -g ausgeschaltet werden:
-g Normalerweise wird ntpd beendet, wenn der Offset die Vernunftsgrenze überschreitet, die standardmäßig 1000 s beträgt. Wenn die Vernunftsgrenze auf Null gesetzt ist, wird keine Vernunftsprüfung durchgeführt und ein Offset ist akzeptabel. Diese Option setzt das Limit außer Kraft und ermöglicht es, die Zeit ohne Einschränkung auf einen beliebigen Wert zu setzen. Dies kann jedoch nur einmal vorkommen. Danach wird ntpd beendet, wenn das Limit überschritten wird. Diese Option kann mit der Option -q verwendet werden.
beide von http://doc.ntp.org/4.1.0/ntpd.htm
-Jonathan Natale
quelle
Wenn Sie sich die Zeit leisten können, zu warten, bis Ihr System synchronisiert ist, können Sie den folgenden
ntp-wait
Befehl verwenden:quelle
Wenn Sie auf systemd sind, können Sie diesen Befehl verwenden:
Und dann wird die Zeit innerhalb von 10-15 Sekunden aktualisiert.
Getestet auf Ubuntu Mate 16.04
quelle
ntpd
undntpdate
standardmäßig über einen eingeschränkten Port (UDP 123) ausgeführt. Wenn Sie sich hinter einer Firewall befinden,ntpd
wird das nie funktionieren,ntpdate
kann aber mit der-u
Option funktionieren . Zum Beispiel:ntpdate -u 0.ubuntu.pool.ntp.org
oderntpdate -u time.nist.gov
sollten beide gut funktionieren.quelle