Korrigieren der CentOS-Systemuhr

11

Die Verwendung der Zeit-C-Funktion (Anzahl der Sekunden seit der Epoche) zeigt, dass die Zeit auf meinem aktuellen CentOS 6-Server im Vergleich zu einem anderen Server mit der richtigen Zeit etwa 7 Stunden zurückliegt. Wie kann ich die Systemuhr korrigieren? Ich glaube nicht, dass es Drift ist, weil ich diesen Server erst vor ein paar Wochen eingerichtet habe, aber es könnte sein. Ich habe ntpd eingerichtet, aber es hilft nicht, vielleicht weil der Zeitunterschied zu groß ist.

user3180
quelle
3
Überprüfen Sie die Ausgabe des Befehls TZ=UTC date.
Michael Hampton
1
Sie haben Recht, ntpd wird einen solchen Zeitunterschied nicht korrigieren. Damit ntpd tatsächlich funktioniert, muss sich Ihr System innerhalb weniger Minuten vom Zeitserver befinden.
fpmurphy
Sa 30.11. 09:09:21 UTC 2013 ist die Ausgabe, die ich gerade erhalten habe
user3180 30.11.13
Ja, das sind sieben Stunden Rückstand.
Michael Hampton

Antworten:

23

Die einfache Antwort lautet "Datum manuell einstellen", was Sie tun müssen. Um dies jedoch zu verhindern, sollten Sie noch mehr tun.

  1. Stellen Sie sicher, dass sich die Systemzeitzonenkonfiguration in einem normalen Zustand befindet.

    Sofern es keinen sehr starken Grund gibt, dies nicht zu tun (z. B. Probleme mit der Softwarekompatibilität), sollten Serveruhren immer zur UTC-Zeit ausgeführt werden.

    Wenn Sie UTC nicht verwenden möchten, wählen Sie eine Zeitzone aus, indem Sie ausführen tzselect. Auf dem Bildschirm wird eine Zeitzone gedruckt, die Sie unten verwenden werden. Ein Beispiel wäre Europe/Moscow. Ansonsten verwenden UTCwie die Zeitzone unten.

    Here is that TZ value again, this time on standard output so that you
    can use the /usr/bin/tzselect command in shell scripts:
    Europe/Moscow
    

    Stellen Sie die Systemuhr wie folgt auf die gewünschte Zeitzone ein:

    1. Ersetzen Sie den Inhalt von /etc/sysconfig/clockdurch Folgendes:

      ZONE="<timezone>"
      UTC=true
      

      Beispielsweise:

      ZONE="Europe/Moscow"
      UTC=true
      

      Beachten Sie, dass UTC=truedies hier festgelegt werden sollte, auch wenn Sie UTC nicht als Zeitzone verwenden. Dies bezieht sich auf die Hardware-Uhr des Servers, die unabhängig von der von Ihnen gewählten Systemzeitzone immer UTC sein sollte.

    2. Ersetzen Sie die /etc/localtimeDatei durch einen Link zur ausgewählten Zeitzone:

      # ln -snf /usr/share/zoneinfo/<timezone> /etc/localtime
      

      Beispielsweise:

      # ln -snf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
      # ln -snf /usr/share/zoneinfo/UTC /etc/localtime
      
  2. Stellen Sie die Uhr manuell auf die aktuelle Uhrzeit ein.

    1. Synchronisieren Sie die Systemuhr mit der aktuellen Uhrzeit:

      # ntpd -g -q
      
    2. Überprüfen Sie, ob die Uhrzeit korrekt angezeigt wird:

      # date
      
    3. Synchronisieren Sie die Hardware-Uhr des Servers mit der Systemuhr:

      # hwclock -wu
      
  3. Starte den Computer neu. Ein Neustart ist erforderlich, da alle Systemdienste neu gestartet werden müssen, um die korrigierte Zeit und Zeitzone zu erfassen, und die Hardware-Uhr des Servers getestet werden muss (z. B. auf eine fehlerhafte Batterie).

    Überprüfen Sie nach dem Neustart, ob das System die richtige Zeit anzeigt und ntpd ordnungsgemäß ausgeführt wird.

Michael Hampton
quelle
Vielen Dank Michael. Wie stelle ich sicher, dass es während des Setups korrekt ist? Ich erinnere mich, dass ich die richtige Zeitzone ausgewählt habe, aber die Zeit ist immer noch falsch.
user3180
Im grafischen Installationsprogramm gibt es ein Kontrollkästchen mit der Angabe "Systemuhr verwendet UTC". Lassen Sie dies immer aktiviert, unabhängig davon, welche Zeitzone Sie auswählen.
Michael Hampton
0

Stellen Sie sicher, dass die Zeitzone mit den Feldern übereinstimmt, die Sie vergleichen

BEARBEITEN

wenn TZ anders ist

/ etc / localtime

Denken Sie dann daran, den UTC-Offset beim Vergleich der Systemzeit zu berücksichtigen

nandoP
quelle