Wie stelle ich Ubuntu so ein, dass meine Uhr mit einem Zeitserver synchronisiert wird?

23

Ich möchte, dass Ubuntu meine Systemuhr beim Start automatisch mit einem Zeitserver synchronisiert.

Mein PC ist jedoch erst mit dem Internet verbunden, nachdem ich mich angemeldet habe (plus 5 - 10 Sekunden für eine gute Maßnahme).

Wie kann ich das einstellen?

Nathan Osman
quelle
2
Es gibt hier bereits hervorragende Antworten, die erklären, wie Sie ntpd installieren, damit Ihr Computer ständig mit den Internet-Zeitservern synchron bleibt. Ich wollte jedoch nur hinzufügen, dass Ubuntu standardmäßig die Zeit mit ntp.ubuntu.com synchronisiert, wann immer Ihre Netzwerkschnittstelle kommt "up" (zB wenn Sie Ihren Computer starten). Dies scheint in Ihrem Fall nicht der Fall zu sein, da Sie eine Verbindung zum Internet herstellen. Andere Leser sollten jedoch nicht davon ausgehen, dass Ubuntu die Zeit nicht synchronisiert, ohne dass ntpd installiert ist.
Hier ist eine, die erklärt, wie man es auf time.nist.gov setzt: askubuntu.com/questions/972799/…
SDsolar

Antworten:

32

Dies geschieht mit NTP, für das Anweisungen verfügbar sind. Grundsätzlich müssen Sie einen NTP-Daemon installieren. Es scheint mehrere Möglichkeiten zu geben, aber die "Standard" -Variante ist im Paket enthalten ntp. Gemäß den Anweisungen auf der verlinkten Seite,

sudo apt-get install ntp

Alles wird so eingerichtet, dass es mit Ubuntus NTP-Server synchronisiert werden kann.

EDIT : Ich habe "beim Start" verpasst. Es wird generell empfohlen, ntpd zu verwenden, um eine kontinuierliche Synchronisierung zwischen Ihrem System und dem Server zu erreichen. Wenn Sie jedoch wirklich nur einmal synchronisieren möchten, scheint die Antwort von mfisch genau das zu sein, wonach Sie suchen.

David Z
quelle
3
Ich denke, im Allgemeinen ist es besser, wenn ntpd immer läuft und die Verbindung nicht hergestellt werden kann, wenn er nicht online ist. Das ist keineswegs schädlich.
Vor diesem Hintergrund
Ich bin damit einverstanden, dass es ununterbrochen läuft.
Nathan Osman
1
George, mach das einfach. Ich hatte gehofft, Ihre "echte" Frage beantworten zu können, da das Ärgerlichste auf der Welt darin besteht, eine solche Frage zu stellen und alle Antworten zu haben: "Warum wollen Sie das tun?"
mfisch
Für Ubuntu 18.04 gilt der Hinweis, ntpd länger zu installieren. Standardmäßig synchronisiert systemd-timesyncd.service die Uhrzeit.
Ernstkl
9

Wenn Sie zu "System-> Administration-> Time and Date" gehen, erhalten Sie eine GUI zum Einstellen von Datum und Uhrzeit.

Für die Verwendung von Zeitservern ist eine Option vorgesehen. Wenn Sie dies überprüfen und NTP nicht installiert ist, werden Sie gefragt, ob Sie es installieren möchten. Klicken Sie einfach auf "Ja" und lassen Sie es seinen Job machen :)

Kleiner Jawa
quelle
Habe das "Startup" Ding vergessen. NTP erledigt seine Arbeit regelmäßig, was bedeutet, dass Sie immer dann synchronisiert werden sollten , wenn Sie online sind. Die einzige Möglichkeit, dies sicherzustellen, ist die Verwendung eines Skripts, das von mfisch bereitgestellt wird. Um ehrlich zu sein: Einmal synchronisiert, ist die Wahrscheinlichkeit gering, dass Ihr Computer nicht mehr auf dem neuesten Stand ist. Wenn Sie also die Standard-Zeitsynchronisation verwenden und sie im Hintergrund ausführen lassen, sollten Sie die meiste Zeit in Betrieb sein, ohne mehr tun zu müssen.
Little Jawa
Ist es nicht mit "Uhrzeit und Datum" beschriftet?
Firefeather
@Firefeather: Es kann gut sein. Ich habe keine englische Benutzeroberfläche, daher kann ich nicht sagen;)
Little Jawa
Ach, dumm von mir, die Internationalisierung zu vergessen. Mein en-us-System beschriftet es mit "Uhrzeit und Datum".
Firefeather
6

Sie können dies mit at und ntpdate tun . at ist wahrscheinlich schon installiert, aber ntpdate kann es nicht sein. (apt-get installiere ntpdate).

Erstellen Sie zuerst ein kleines Skript, das ntpdate ausführt, und nennen Sie es update_time.sh.

#!/bin/bash
ntpdate pool.ntp.org

Fügen Sie in Ihrer .bash_login-Datei (die Sie möglicherweise erstellen müssen) Folgendes hinzu:

at -f ~/update_time.sh now + 1 minute

Das sollte machen was du willst. Sie können die Verzögerung auf 5 Minuten, 10 Minuten usw. einstellen.

EDIT: Ich habe gerade festgestellt, dass Sie root sein müssen, um zu laufen ntpdate. Sie müssen das SUID-Bit im Skript update_time.sh setzen, das ich erwähnt habe. Sie können dies tun, indem Sie dies über den Befehl ausführen (muss nur einmal ausgeführt werden):

sudo chmod 4711 update_time.sh
sudo chown root update_time.sh
mfisch
quelle
1
iirc Sie können für .sh-Skripte kein suid festlegen.
Broam
Kannst du das dann direkt auf ntpdate machen? Das würde wahrscheinlich das Gleiche bewirken.
mfisch
2
Warum benutzen at? Und wenn Sie automatisch ausgeführt werden ntpdate, warum nicht einfach den ntpDienst installieren ?
Reinier Post
1
Hinweis: ntpdate ist nicht mehr standardmäßig auf Ubuntu (16.04+) installiert und wurde zu Gunsten von timedatectl ausrangiert. timedatectl steuert den Zeitsynchronisationsdienst von systemd, der standardmäßig für die Zeitsynchronisation verwendet wird.
Corey Goldberg
0

Seit Ubuntu 16.04 ersetzt timedatectl / timesyncd (die Teil von systemd sind) den größten Teil von ntpdate / ntp. Siehe Zeitsynchronisation .

Möglicherweise müssen Sie die Zeitsynchronisierung aktivieren, indem Sie Folgendes verwenden:

$ sudo timedatectl set-ntp on

Wenn Sie chrony verwenden möchten:

  • Wenn Sie eine einmalige Synchronisierung benötigen, gehen Sie wie folgt vor: $ chronyd -q

  • Wenn Sie eine einmalige Zeitprüfung benötigen, ohne die Zeit einzustellen, verwenden Sie: $ chronyd -Q

  • Für die fortlaufende Synchronisierung ist die empfohlene Lösung chronisch:

chronisch (d)

Der NTP-Daemon chronyd berechnet die Drift und den Offset Ihrer Systemuhr und passt diese kontinuierlich an, sodass keine großen Korrekturen vorgenommen werden, die beispielsweise zu inkonsistenten Protokollen führen könnten. Die Kosten sind ein wenig Rechenleistung und Arbeitsspeicher, aber für einen modernen Server ist dies normalerweise vernachlässigbar. Installation

Um chrony zu installieren, geben Sie an einer Terminal-Eingabeaufforderung Folgendes ein:

$ sudo apt install chrony

Möglicherweise müssen Sie auch aktivieren

sudo timedatectl set-ntp on

Update: Eine andere Methode, wenn das oben genannte nicht funktioniert, besteht darin, einen Cron-Job für die Ausführung festzulegen$ chronyd -q

JBaczuk
quelle