Como o conteúdo do dmesg pode ser conectado a um arquivo?

18

Estou executando um sistema operacional Linux que foi construído a partir do zero. Gostaria de salvar o buffer de mensagem do kernel (dmesg) em um arquivo que permanecerá persistente entre as reinicializações.

Tentei executar o syslogd, mas ele apenas abriu um novo arquivo de log, / var / log / messages, sem o buffer de mensagens do kernel existente, nem nenhuma nova mensagem que o kernel gerou após o lançamento do syslogd.

Como o buffer de mensagens do kernel pode ser salvo em um arquivo de log persistente?

miluz
fonte
Qual syslogd você está executando: sysklogd, busybox, inetutils, systemd, rsyslog, outro?
Gilles 'SO- stop be evil'

Respostas:

16

Você precisa olhar para /etc/rsyslog.confou /etc/syslog.conf. Se você tem uma linha cedo, como:

*.*                -/var/log/syslog

Tudo, incluindo o material do dmesg, deve ir para esse arquivo. Para direcioná-lo melhor:

kernel.*           -/var/log/dmesg

Se isso falhar por algum motivo, você poderá periodicamente (por exemplo, via cron):

dmesg > /var/log/dmesg

Dependendo do tamanho do buffer dmesg (este é compilado no kernel ou definido através do log_buf_lenparâmetro) e por quanto tempo seu sistema está ativo, isso manterá um registro do log do kernel desde o início.

Se você deseja gravar a saída dmesg continuamente em um arquivo, use o sinalizador -w (--follow).

dmesg --follow > mydmesg.log
Cachinhos Dourados
fonte
4
+1 Vale ressaltar que o dmesg usa um buffer de anel para que ele não cresça sem limites e é mantido dentro do kernel para que as mensagens possam ser registradas antes de coisas como o sistema de arquivos.
RSU
3

Se você usar systemd, poderá obter todas as informações do systemddiário usando journalctl -k. sysloge rsyslognão é necessário se você usar o systemd.

Catalin Hritcu
fonte
0

O PopSicle faz isso. Utilizo o redirecionamento msdos antigo e ele é redistribuído para um arquivo .csv que é aberto em uma planilha pelo LibreOffice Calc no terminal, tente algo como isto

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
fonte