Come si può accedere al contenuto di dmesg in un file?


18

Sto eseguendo un sistema operativo Linux che è stato creato da zero. Vorrei salvare il buffer dei messaggi del kernel (dmesg) in un file che rimarrà persistente tra i riavvii.

Ho provato a eseguire syslogd ma ha appena aperto un nuovo file di registro, / var / log / messages, con né il buffer dei messaggi del kernel esistente, né alcun nuovo messaggio generato dal kernel dopo l'avvio di syslogd.

Come si può salvare il buffer dei messaggi del kernel in un file di registro persistente?


Quale syslogd stai eseguendo: sysklogd, busybox, inetutils, systemd, rsyslog, altro?
Gilles 'SO- smetti di essere malvagio' il

Risposte:


16

Devi guardare uno /etc/rsyslog.confo /etc/syslog.conf. Se hai una linea in anticipo come:

*.*                -/var/log/syslog

Tutto, incluso il materiale di dmesg, dovrebbe andare a quel file. Per indirizzarlo meglio:

kernel.*           -/var/log/dmesg

Se ciò non riesce per qualche motivo, è possibile periodicamente (ad esempio tramite cron):

dmesg > /var/log/dmesg

A seconda di quanto è grande il buffer dmesg (questo è compilato nel kernel o impostato tramite il log_buf_lenparametro) e da quanto tempo il tuo sistema è attivo, ciò manterrà un registro del log del kernel da quando è stato avviato.

Se vuoi scrivere l'output di dmesg continuamente su un file usa il flag -w (--follow).

dmesg --follow > mydmesg.log

4
+1 Probabilmente vale la pena ricordare che dmesg usa un buffer ad anello in modo che non cresca senza limiti e sia conservato all'interno del kernel in modo che i messaggi possano essere registrati prima che cose come il filesystem sia persino attivo.
msw,

3

Se lo usi systemd, puoi ottenere tutte le informazioni dal systemddiario usando journalctl -k. sysloge rsyslognon sono necessari se si utilizza systemd.


0

PopSicle fa questo Uso il vecchio reindirizzamento msdos ed è ridisegnato in un file .csv che viene aperto in un foglio di calcolo da LibreOffice Calc nel terminale provare qualcosa del genere

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"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.