Wie kann Dmesg-Inhalt in eine Datei protokolliert werden?


18

Ich verwende ein Linux-Betriebssystem, das von Grund auf neu erstellt wurde. Ich möchte den Kernel-Nachrichtenpuffer (dmesg) in einer Datei speichern, die zwischen Neustarts bestehen bleibt.

Ich habe versucht, syslogd auszuführen, aber es hat gerade eine neue Protokolldatei / var / log / messages geöffnet, die weder den vorhandenen Kernel-Nachrichtenpuffer noch neue Nachrichten enthält, die der Kernel nach dem Start von syslogd generiert hat.

Wie kann der Kernel-Nachrichtenpuffer in einer dauerhaften Protokolldatei gespeichert werden?


Welches syslogd führen Sie aus: sysklogd, busybox, inetutils, systemd, rsyslog, other?
Gilles 'SO- hör auf böse zu sein'

Antworten:


16

Sie müssen sich entweder /etc/rsyslog.confoder ansehen /etc/syslog.conf. Wenn Sie frühzeitig eine Leitung haben, wie zum Beispiel:

*.*                -/var/log/syslog

Alles, einschließlich des Materials von dmesg, sollte in diese Datei gehen. Um es besser anzuvisieren:

kernel.*           -/var/log/dmesg

Wenn dies aus irgendeinem Grund fehlschlägt, können Sie in regelmäßigen Abständen (z. B. über cron):

dmesg > /var/log/dmesg

Je nachdem, wie groß der dmesg-Puffer ist (dieser wird in den Kernel kompiliert oder über den log_buf_lenParameter festgelegt) und wie lange Ihr System bereits aktiv ist, wird das Kernel-Protokoll seit dem Start aufgezeichnet .

Wenn Sie die dmesg-Ausgabe kontinuierlich in eine Datei schreiben möchten, verwenden Sie das Flag -w (--follow).

dmesg --follow > mydmesg.log

4
+1 Es ist wahrscheinlich erwähnenswert, dass dmesg einen Ringpuffer verwendet, damit er nicht ohne Bindung wächst und im Kernel gespeichert wird, damit Nachrichten protokolliert werden können, bevor das Dateisystem überhaupt läuft.
msw

3

Wenn Sie verwenden systemd, können Sie alle Informationen aus dem systemdJournal mithilfe von abrufen journalctl -k. syslogund rsyslogsind nicht erforderlich, wenn Sie systemd verwenden.


0

PopSicle verwendet dazu die alte msdos-Weiterleitung und wird in eine .csv-Datei umgeleitet, die von LibreOffice Calc im Terminal in einer Tabellenkalkulation geöffnet wird

dmesg > /path to where you want the file written/File-Name.csv 
dmesg > /media/joe/Data/Z-Back/Script-Files/Dmesg-Output.csv 

echo "Dmesg-to-CSV.sh"" the script file"

#!/bin/bash
echo "This is a shell script"  
SOMEVAR='I am done running dmesg and redirecting to /media/joe/Data/B-Back/Script-Files/Dmesg-Output.csv'  
echo "$SOMEVAR"  
dmesg > /media/joe/Data/Z-Back/Script-Files/Dmesg-Output.csv 

echo "Dmesg-CSV.desktop"" the icon file"

[Desktop Entry]
Encoding=UTF-8
Name=Dmesg-to-CSV.sh
Comment=Launch DirSyncPro
Exec=gnome-terminal -e /media/joe/Data/Z-Back/Script-Files/Dmesg-to-CSV.sh
Icon=utilities-terminal
Type=Application
Name[en_US]=Dmesg-CSV.desktop

echo "both the .sh file and .desktop file are stored in the same directory as the .csv output file"
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.