Ich hoffe, dass hier jemand ist, der mir bei diesem seltsamen Problem helfen kann.
Ich denke, dass ich weiß, warum es passiert, aber ich weiß nicht, wie ich es lösen soll. Vielleicht liegt es daran, dass die BIOS-Zeit nicht richtig eingestellt ist oder so ähnlich. Aber ich möchte die BIOS-Zeit von ungefähr 400+ Servern nicht ändern. (Oder ändern Sie das BIOS Batt)
root@spool:~# echo TEST > /dev/kmsg
root@spool:~# dmesg -T | tail -1
[Mon Feb 17 04:57:03 2014] TEST
root@spool:~# date
Mon Feb 17 11:45:17 CET 2014
Der Server führt ntp für die Zeitsynchronisation aus.
Weiß jemand hier, wie man dieses Problem im Betriebssystem behebt?
Linux spool 3.2.0-4-amd64 #1 SMP Debian 3.2.46-1+deb7u1 x86_64 GNU/Linux
Warum werden /dev/kmsg
Datum und Uhrzeit meiner eingehenden Nachricht dmesg
nicht mit Datum und Uhrzeit des Systems synchronisiert?
/etc/localtime
richtig ist? Diesyslog
Zeit von der Ortszeit bekommen.journalctl -k
jetzt (auf Systemen mit Journald) genau deswegen zu verwenden. Dies schließt die korrekte Zeit in meiner Zeitzone ein.Antworten:
Um Ihre Theorie zu verifizieren (die übrigens vernünftig ist), führen Sie Folgendes als root aus:
Dies zeigt Ihnen Ihre Hardware-Uhr auf dem Server, auf dem Sie den Befehl ausführen.
Führen Sie den folgenden Befehl aus, um Ihre Hardwareuhr mit Ihrer Systemzeit (die von ntp verwaltet wird) zu synchronisieren:
Das letzte Argument (--utc) weist hwclock an, die Uhrzeit in der Hardware-Uhr in der koordinierten Weltzeit zu speichern.
Beachten Sie außerdem, dass in der Manpage für dmesg (1) Folgendes steht, damit das aufgetretene Verhalten dokumentiert und gültig ist:
quelle
root@spool:~# hwclock --show
Mon Feb 17 20:30:14 2014 -0.985068 seconds
root@spool:~# hwclock --systohc --utc
root@spool:~# echo TEST > /dev/kmsg
root@spool:~# dmesg -T | tail -1
[Mon Feb 17 13:50:14 2014] TEST
root@spool:~# date
Mon Feb 17 20:30:46 CET 2014
dmesg druckt nur den Kernel-Ringpuffer, der Nachrichten mit einer Betriebszeit von Sekunden nach dem Start als Zeitstempel protokolliert.
Wenn Sie also die Option -T verwenden, werden alle diese Werte für die Betriebszeit nur zu dem Datum hinzugefügt, an dem Ihr System gestartet wurde. Wenn Sie Zeiten hatten, in denen Sie im Suspend- oder Resume-Modus geschlafen haben, gehen diese verloren. In diesem Fall ist die Option -T nicht sinnvoll, da Datums- / Zeitwerte nicht in der Vergangenheit liegen.
quelle
Um genaue Zeiten für "aktuelle" Einträge in zu erhalten
dmesg
, können Sie die dmesg-Zeitstempel mit einigem Hacking der Ausgabe in Echtzeit konvertieren.Mit "kürzlich" meine ich Zeiten nach der letzten Unterbrechung / Wiederaufnahme, da (wie andere bereits darauf hingewiesen haben) Unterbrechungszeiten nicht im dmesg-Zeitstempel gezählt werden.
Wenn Sie es jedoch häufig benötigen, wie auf einem Notebook, können Sie Funktionen oder Aliasnamen wie die folgenden hinzufügen:
Beispielausgabe:
Im Vergleich zur Originalausgabe
dmesg
(die um 3 Tage abweicht):quelle
dmesg
Zeile mit aktualisiertem regulären Ausdruck.