如何将 dmesg 内容记录到文件中?

如何将 dmesg 内容记录到文件中?

我正在运行一个从头开始构建的 Linux 操作系统。我想将内核消息缓冲区(dmesg)保存到一个文件中,该文件将在重新启动之间保持不变。

我尝试运行 syslogd,但它只是打开了一个新的日志文件 /var/log/messages,既没有现有的内核消息缓冲区,也没有启动 syslogd 后内核生成的任何新消息。

如何将内核消息缓冲区保存到持久日志文件中?

答案1

您需要查看/etc/rsyslog.conf/etc/syslog.conf。如果您很早就排队了,例如:

*.*                -/var/log/syslog

所有内容,包括 dmesg 中的内容,都应该放入该文件中。为了更好地瞄准它:

kernel.*           -/var/log/dmesg

如果由于某种原因失败,您可以定期(例如通过 cron):

dmesg > /var/log/dmesg

根据 dmesg 缓冲区有多大(它被编译到内核中,或通过参数设置log_buf_len)以及系统运行了多长时间,这将保留自启动以来的内核日志记录。

如果要将 dmesg 输出连续写入文件,请使用 -w (--follow) 标志。

dmesg --follow > mydmesg.log

答案2

如果您使用,那么您可以使用systemd获取期刊中的所有信息。如果您使用 systemd,则不需要。systemdjournalctl -ksyslogrsyslog

答案3

PopSicle 执行此操作我使用旧的 msdos 重定向,并将其重定向到 .csv 文件,该文件由 LibreOffice Calc 在终端中的电子表格中打开,尝试类似这样的操作

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"

相关内容