Später unterstützt dmesg das -T-Flag. Versuchen Sie es vielleicht mit -T, wenn Ihr dmesg es unterstützt.
Ilansch
Centos 7+ unterstütztdmesg -T
Rogerdpack
Antworten:
12
dmesgLiest den Kernel Log Ring Buffer. Es werden keine Zeitstempel erstellt. Sie sollten syslog so konfigurieren, dass die Kernel-Protokolle aus diesem Puffer abgerufen und an eine Datei gesendet werden (sofern dies nicht bereits festgelegt wurde). Beachten Sie, dass die standardmäßige CentOS 5.x-Syslog-Konfiguration /var/log/messages, wie ich mich erinnere, Kernel-Protokolle an sendet .
Wenn Sie alle Kernel-Protokolle (dmesg) /var/log/kern.logmit dem Standard-Syslog-Daemon an senden möchten , fügen Sie eine Zeile wie die folgende hinzu/etc/syslog.conf
Danke für die Antwort. Für jeden, der sucht CentOS 6, Laufen fand ich es in/etc/rsyslog.conf
Safado
Ja, mit CentOS (und RHEL) 6.x haben sie den Standard-Syslog-Daemon von sysklogd auf rsyslog geändert. Es ist auch als (unterstütztes) Paket für RHEL / CentOS 5.x verfügbar.
Christopher Cashell
1
Nun, ich habe dies auf meiner Liste der Dinge, die herausgefunden werden müssen, aber jetzt haben Sie mir ein bisschen
Googeln
8
Es gibt die Lösung "Timestamps für dmesg / Kernel Ring Buffer aktivieren"
Sie könnten hinzufügen:
printk.time=1
zum Kernel cmdline.
Was mich betrifft, habe ich rc.local auf allen Maschinen mit Marionette hinzugefügt. Es ist einfacher für mich):
if test -f /sys/module/printk/parameters/time; then
echo 1 > /sys/module/printk/parameters/time
fi
Verwenden rc.localist wirklich eine hässliche Lösung dafür (Verwenden rc.localist fast immer eine hässliche Lösung für alles). Eine bessere Lösung wäre, zu setzen printk.time = 1in /etc/sysctl.confoder eine Datei in /etc/sysctl.d/. Aus diesem Grund existieren diese Dateien. Wenn rc.localSie etwas hineindrängen, entsteht schließlich ein zerbrechlicher, verschlungener, chaotischer und unzuverlässiger Start.
Christopher Cashell
Dies, was im Kommentar von @ChristopherCashell steht, ist die einzig richtige Antwort auf diese Frage. Es ist eine Schande, dass es keine tatsächliche Antwort ist.
Petr
1
Ich habe dieses einfache Skript geschrieben. Ja, es ist langsam. Wenn Sie etwas schneller wollen, schreiben Sie entweder ein Skript auf Perl, Python oder etwas anderem. Ich bin sicher, dieses einfache Skript kann Ihnen Aufschluss darüber geben, wie es berechnet werden kann.
Bitte beachten Sie, dass ich den Sekundenbruchteil, der in jeder Zeile (nach dem. Im Zeitstempel) registriert ist, ignoriert habe.
Perl -n ist eine Möglichkeit, Standardeingaben zu lesen und in die Variable $ _ zu lesen.
Der Body (nicht der BEGIN-Abschnitt) wird dann für jede Zeile einmal ausgeführt.
BEGIN führt den Code einmal in {} aus.
$ a ist der Beginn von dmesg seit der Epoche (Sekunden)
Der Befehl s / ... nimmt den Wert in $ _ und ersetzt den Teil \ s * #####. ###### des Zeitstempels durch die Version "localtime" des hinzugefügten dmesg-Offsets ($ 1) die Systemstartzeit ($ a)
print $ a druckt das dmesg mit dem lokalen Zeitstempel, der den Zeitstempel "Sekunden seit dem Start" ersetzt.
perl -n ist eine Möglichkeit, Standardeingaben zu lesen und in die Variable $ _ zu lesen.
Der Body (nicht der BEGIN-Abschnitt) wird dann für jede Zeile einmal ausgeführt.
BEGIN führt den Code einmal in {} aus.
$ a ist der Beginn von dmesg seit der Epoche
Der Befehl s / ... übernimmt den Wert in $ _ und ersetzt den Teil #####. ###### des Zeitstempels durch die Version "localtime" des dmesg-Offsets ($ 1), die zum Systemstart hinzugefügt wird Zeit ($ a)
print $ a druckt das dmesg mit dem lokalen Zeitstempel, der den Zeitstempel "Sekunden seit dem Start" ersetzt.
@kasperd Das bedeutet: - Perl -n ist eine Möglichkeit, Standardeingaben zu lesen und in die Variable $ _ zu lesen. Der Body (nicht der BEGIN-Abschnitt) wird dann für jede Zeile einmal ausgeführt. - BEGIN führt den Code einmal in {} aus. $ a ist der Beginn von dmesg seit der Epoche - Der s/...Befehl nimmt den Wert in $ _ und ersetzt den Teil #####. ###### des Zeitstempels durch die "localtime" - Version des dmesg - Offsets ($ 1 ) zur Systemstartzeit hinzugefügt ($ a). - print $adruckt das dmesg mit dem für das Gebietsschema geeigneten Zeitstempel, der den Zeitstempel "Sekunden seit dem Start" ersetzt.
dmesg -T
Antworten:
dmesg
Liest den Kernel Log Ring Buffer. Es werden keine Zeitstempel erstellt. Sie sollten syslog so konfigurieren, dass die Kernel-Protokolle aus diesem Puffer abgerufen und an eine Datei gesendet werden (sofern dies nicht bereits festgelegt wurde). Beachten Sie, dass die standardmäßige CentOS 5.x-Syslog-Konfiguration/var/log/messages
, wie ich mich erinnere, Kernel-Protokolle an sendet .Wenn Sie alle Kernel-Protokolle (dmesg)
/var/log/kern.log
mit dem Standard-Syslog-Daemon an senden möchten , fügen Sie eine Zeile wie die folgende hinzu/etc/syslog.conf
quelle
/etc/rsyslog.conf
Es gibt die Lösung "Timestamps für dmesg / Kernel Ring Buffer aktivieren"
Sie könnten hinzufügen:
zum Kernel cmdline.
Was mich betrifft, habe ich rc.local auf allen Maschinen mit Marionette hinzugefügt. Es ist einfacher für mich):
quelle
rc.local
ist wirklich eine hässliche Lösung dafür (Verwendenrc.local
ist fast immer eine hässliche Lösung für alles). Eine bessere Lösung wäre, zu setzenprintk.time = 1
in/etc/sysctl.conf
oder eine Datei in/etc/sysctl.d/
. Aus diesem Grund existieren diese Dateien. Wennrc.local
Sie etwas hineindrängen, entsteht schließlich ein zerbrechlicher, verschlungener, chaotischer und unzuverlässiger Start.Ich habe dieses einfache Skript geschrieben. Ja, es ist langsam. Wenn Sie etwas schneller wollen, schreiben Sie entweder ein Skript auf Perl, Python oder etwas anderem. Ich bin sicher, dieses einfache Skript kann Ihnen Aufschluss darüber geben, wie es berechnet werden kann.
Bitte beachten Sie, dass ich den Sekundenbruchteil, der in jeder Zeile (nach dem. Im Zeitstempel) registriert ist, ignoriert habe.
Ich hoffe, es hilft. :)
quelle
Skriptänderung für den Fall, dass die Zeile nicht mit einem "[" beginnt
quelle
Dies ist ein Update auf Plutoids Vorschlag, bei dem die führenden Leerzeichen aus dem Zeitstempel entfernt werden.
quelle
Ein kleines Perl-Skript wie unten. Es ist ein allgemeiner Weg und ich bin nicht der Autor.
perl -n
ist eine Möglichkeit, Standardeingaben zu lesen und in die Variable $ _ zu lesen.quelle
s/...
Befehl nimmt den Wert in $ _ und ersetzt den Teil #####. ###### des Zeitstempels durch die "localtime" - Version des dmesg - Offsets ($ 1 ) zur Systemstartzeit hinzugefügt ($ a). -print $a
druckt das dmesg mit dem für das Gebietsschema geeigneten Zeitstempel, der den Zeitstempel "Sekunden seit dem Start" ersetzt.