Як вміст dmesg можна ввійти у файл?


18

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

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

Як можна зберегти буфер повідомлень ядра у стійкий файл журналу?


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

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"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.