Ich versuche, mithilfe von NTPD die Zeit meines Linux-Computers auf einen bestimmten NTP-Server zu aktualisieren.
Hier ist das Szenario:
Jedes Mal, wenn der Linux-Computer gestartet wird, möchte ich die Zeit vom NTP-Server aktualisieren. Wenn dies nicht erfolgreich ist, möchte ich es alle 5 Minuten erneut versuchen, bis es erfolgreich ist (max. 2 Stunden).
Ich suchte herum und stellte fest, dass ich NTPD verwenden sollte (?) Und einen Befehl wie:
#ntpdate ntp.server.com
(vor dem Start von NTPD)
#ntpd some_options_to_start
Die Fragen sind:
- Wie kann ich feststellen, ob die Zeit mit diesen Befehlen erfolgreich aktualisiert wurde?
- Kann ich das Intervall einstellen, um die Zeit von ntpd zu aktualisieren? (oder muss ich sowas benutzen
sleep
und mitdo
loopen ..while
/for
in shell?)
Beachten Sie, dass ich die obigen Befehle in einem Shell-Skript ausführen möchte und die Shell auf einem Webserver ablegen möchte. Anschließend führen Clients (mit einem Webbrowser) das Skript auf der Website aus. Ich muss also überprüfen, ob das Update erfolgreich war oder nicht, um das Ergebnis an den Client zu senden (über das Web).
Verwenden Sie ntpstat.
quelle
ntpq -p
keine Peers angezeigt wurden . Ich vertraue diesem Dienstprogramm also nicht.Um die erste Frage zu beantworten,
ntpdate
erfahren Sie normalerweise, was es getan hat oder was es vielleicht nicht getan hat.Der NTP-Dämon wird
ntpd
ständig ausgeführt und fragt von Zeit zu Zeit die NTP-Server (normalerweise in konfiguriert/etc/ntp.conf
) ab. Sie sollten Ihr Skript nicht alle 5 Minuten ausführen müssen.ntpdate
sollte die Maschine fast mit dem Server synchronisieren undntpd
wird im Hintergrund ausgeführt und synchron gehalten. Sie stellen das Intervall, das ntpd versucht, nicht ein, es passt das Intervall an, das davon abhängt, wie die lokale Uhr von den Servern abweicht, und von der Qualität der Verbindungen zu den Servern.Sie können ein Programm mit dem Namen verwenden, um
ntpdc
zu sehen, wasntpd
als Information erhalten bleibt:Ich denke, dass die Zahl, an der Sie normalerweise interessiert sind, "Offset" ist, das ist die Anzahl der Sekunden, die Ihre lokale Uhr von der Uhr des Servers abweicht.
Als
man
Seite fürntpdc
Status für den Befehl "Peers":Somit ist der "Versatz" in Sekunden angegeben.
Es scheint, dass
ntpdc
veraltet ist, ersetzt durchntpq
.ntpq
hat einen interaktiven "Peers" -Befehl, der "Offset" in Millisekunden ausgibt. Mein RedHat-Server verfügt über beidesntpdc
undntpq
daher müssen Sie vorsichtig sein.quelle
ntp-wait
wurde für dieses Problem gemacht.Nach fünf Minuten
man ntp-wait
sollten Sie einsatzbereit sein ...quelle
Ich habe dem @ BillTHor-Bash-Skript auch eine Prüfung für den Exit-Code ntpdstat> 0 hinzugefügt:
[UPDATE] Da das Skript, das die ntpq-Ausgabe verwendet, für einen größeren Versatz (mehr als 4 Stellen Versatz) unbrauchbar war, habe ich eine neue Version nur mit ntpstat ausprobiert:
quelle
NTP-Offset kann mit der folgenden UNIX-Pipeline abgerufen werden:
Die Anzahl der NTP-Peers kann mit der folgenden UNIX-Pipeline ermittelt werden:
Für NTP Offet verwenden wir:
Für die NTP-Peer-Zählung verwenden wir:
Zabbix-fähige NTP-Überwachungskonfiguration (Quelle: Joyent):
Nagios-fähige NTP-Überwachungs-Plugins:
check_ntp_offset:
check_ntp_peers:
Ich sollte wirklich zulassen, dass die Warn- und kritischen Schwellenwerte in den Nagios-Skripten mit -w und -c konfiguriert werden können. Ohne das sind sie nicht wirklich vollständig Plug-in-fähig. Weitere Anleitungen dazu finden Sie in einem Tutorial hier: http://www.kernel-panic.it/openbsd/nagios/nagios6.html
quelle
Es wird behauptet, dass Chrony Ihren Anwendungsfall besser handhabt als NTPd (Netzwerk und Computer ein / aus, Suspendieren usw.). Sehen
http://fedoraproject.org/wiki/Features/ChronyDefaultNTP
RE warum halte ich chronny für gut: Es war auf meinem Fedora-Rechner vorinstalliert und ich hatte noch nie ein Problem damit (ich habe es seit Jahren benutzt). Ich hatte in der Vergangenheit auch noch nie Probleme mit ntpd, aber wenn Sie den Link lesen, den ich bereitgestellt habe, finden Sie einige Informationen, warum chrony für nicht immer auf Computern besser ist. Aus diesem Grund habe ich dem OP vorgeschlagen, es auszuprobieren, es könnte für ihn besser funktionieren oder auch nicht. Es ist also nur eine weitere gute Option, die Sie ausprobieren sollten, bevor Sie zu viel tunen, optimieren und ntpd hacken.
quelle
quelle
Wie die vorherige Antwort oben, aber mit einer geringfügigen Änderung, wie der vorherige Befehl die if-Anweisung für so viele Offsets ausführt, dh wenn der Offset 3 ist, wird NTP innerhalb von 0,1 ... 3-mal vor dem Schließen gedruckt. Es könnte ärgerlich sein, wenn Sie einen Server haben, der weit von der Synchronisation entfernt ist. Es gibt wahrscheinlich auch eine Möglichkeit, die for-Schleife zu entfernen ...
quelle