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?

miluz
quelle
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
Goldlöckchen
quelle
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.

Catalin Hritcu
quelle
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"
Joe
quelle