¿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?


¿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

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.


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"
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.