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

mil*_*luz 26 linux syslog dmesg

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

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

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

gol*_*cks 19

您需要查看/etc/rsyslog.conf/etc/syslog.conf。如果您在早期有一条线路,例如:

*.*                -/var/log/syslog
Run Code Online (Sandbox Code Playgroud)

一切,包括来自 dmesg 的东西,都应该去那个文件。为了更好地瞄准它:

kernel.*           -/var/log/dmesg
Run Code Online (Sandbox Code Playgroud)

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

dmesg > /var/log/dmesg
Run Code Online (Sandbox Code Playgroud)

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

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

dmesg --follow > mydmesg.log
Run Code Online (Sandbox Code Playgroud)

  • +1 可能值得一提的是 dmesg 使用环形缓冲区,因此它不会无限制地增长并保存在内核中,以便可以在文件系统之类的事情甚至出现之前记录消息。 (4认同)

小智 7

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