问题:在 syslogd 启动之前发生的内核日志不会附加到我的 syslog 中。
系统描述:我有 syslogd 在启动序列中大约 5 秒启动。我有一个附加到 /dev/kmesg 的脚本,该脚本在启动序列中运行大约 2 秒。它在 syslogd 启动之前运行。
我正在运行 klogd 将内核日志发送到 syslog,但它只发送 syslogd 启动后发生的内核日志。
我在 syslog 中缺少脚本中的内核日志,因为 syslogd 在脚本运行时未启动。
我在系统日志中看到 5 秒后的所有内核日志。如果我只是在启动 5 秒后附加到 /dev/kmsg,我会看到日志进入 syslog。
我的 /etc/syslog.conf 将所有内容配置为像这样进入系统日志
。/路径/到/系统日志
我需要让 klogd 将 kmsg 环形缓冲区的现有内容记录到 syslog,而不仅仅是 klogd 运行后附加到 /dev/kmsg 的内容。我该怎么做呢?
答案1
启动后klogd
,运行它的第二个副本单次模式( klogd -o
)。它将读取并处理内核消息缓冲区中现有的消息,然后退出。
启动first 的长期实例klogd
应该确保没有消息丢失。
如果您无法做到这一点(例如,如果您有一个非常旧的版本klogd
或来自busybox
类似嵌入式系统工具包的版本),那么可以执行以下操作:
if [ -e /var/log/dmesg.boot ]; then
mv /var/log/dmesg.boot /var/log/dmesg.prevboot
fi
dmesg > /var/log/dmesg.boot
一旦根文件系统可写?