dmesg内容如何登录到文件中?


18

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

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

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


您正在运行哪个syslogd:sysklogd,busybox,inetutils,systemd,rsyslog等?
吉尔(Gilles)'“ SO-别再作恶了”

Answers:


16

您需要查看/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

4
+1可能值得一提的是dmesg使用了环形缓冲区,这样它就不会无限制地增长,并被保存在内核中,这样就可以在文件系统出现故障之前记录消息。
msw 2013年


0

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"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.