Как содержимое dmesg может быть зарегистрировано в файл?

18

Я использую ОС Linux, которая была построена с нуля. Я хотел бы сохранить буфер сообщений ядра (dmesg) в файл, который будет оставаться постоянным между перезагрузками.

Я попытался запустить syslogd, но он просто открыл новый файл журнала, / var / log / messages, ни с существующим буфером сообщений ядра, ни с какими-либо новыми сообщениями, сгенерированными ядром после запуска syslogd.

Как сохранить буфер сообщений ядра в постоянном файле журнала?

miluz
источник
Какой syslogd вы используете: sysklogd, busybox, inetutils, systemd, rsyslog, другие?
Жиль "ТАК - перестань быть злым"

Ответы:

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 использует кольцевой буфер, чтобы он не рос без границ и удерживался в ядре, чтобы сообщения могли регистрироваться до того, как файловая система заработает.
мсв
3

Если вы используете, systemdто вы можете получить всю информацию из systemdжурнала, используя journalctl -k. syslogи rsyslogне нужны, если вы используете systemd.

Каталин Хриту
источник
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"
Джо
источник