¿Cómo se puede registrar el contenido de dmesg en un archivo?

18

Estoy ejecutando un sistema operativo Linux que se creó desde cero. Me gustaría guardar el búfer de mensajes del núcleo (dmesg) en un archivo que permanecerá persistente entre reinicios.

Intenté ejecutar syslogd, pero acaba de abrir un nuevo archivo de registro, / var / log / messages, sin el búfer de mensajes del núcleo existente, ni ningún mensaje nuevo que el núcleo generó después del lanzamiento de syslogd.

¿Cómo se puede guardar el búfer de mensajes del núcleo en un archivo de registro persistente?

miluz
fuente
¿Qué syslogd está ejecutando: sysklogd, busybox, inetutils, systemd, rsyslog, otro?
Gilles 'SO- deja de ser malvado'

Respuestas:

16

Tienes que mirar a cualquiera /etc/rsyslog.confo /etc/syslog.conf. Si tiene una línea temprana como:

*.*                -/var/log/syslog

Todo, incluidas las cosas de dmesg, deberían ir a ese archivo. Para apuntar mejor:

kernel.*           -/var/log/dmesg

Si eso falla por alguna razón, podría periódicamente (por ejemplo, a través de cron):

dmesg > /var/log/dmesg

Dependiendo de qué tan grande sea el búfer dmesg (esto se compila en el kernel o se establece a través del log_buf_lenparámetro) y cuánto tiempo ha estado activo su sistema, eso mantendrá un registro del registro del kernel desde que comenzó.

Si desea escribir la salida dmesg continuamente en un archivo, use el indicador -w (--follow).

dmesg --follow > mydmesg.log
encerrada dorada
fuente
44
+1 Probablemente vale la pena mencionar que dmesg usa un buffer de anillo para que no crezca sin límite y se mantenga dentro del kernel para que los mensajes puedan registrarse antes de que el sistema de archivos esté activo.
msw
3

Si usa systemd, puede obtener toda la información del systemddiario usando journalctl -k. syslogy rsyslogno son necesarios si usa systemd.

Catalin Hritcu
fuente
0

PopSicle hace esto. Utilizo la antigua redirección de msdos y se redirige a un archivo .csv que se abre en una hoja de cálculo por LibreOffice Calc en el terminal. Intente algo como esto

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
fuente