Làm thế nào có thể đăng nhập nội dung dmesg vào một tập tin?


18

Tôi đang chạy HĐH Linux được xây dựng từ đầu. Tôi muốn lưu bộ đệm thông điệp kernel (dmesg) vào một tệp sẽ tồn tại dai dẳng giữa các lần khởi động lại.

Tôi đã thử chạy syslogd nhưng nó chỉ mở một tệp nhật ký mới, / var / log / message, không có bộ đệm thông điệp kernel hiện tại, cũng không có bất kỳ tin nhắn mới nào mà kernel tạo ra sau khi syslogd được khởi chạy.

Làm thế nào bộ đệm thông điệp kernel có thể được lưu vào một tệp nhật ký liên tục?


Bạn đang chạy syslogd nào: sysklogd, busybox, inetutils, systemd, rsyslog, khác?
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


16

Bạn cần phải nhìn vào một trong hai /etc/rsyslog.confhoặc /etc/syslog.conf. Nếu bạn có một dòng sớm như:

*.*                -/var/log/syslog

Tất cả mọi thứ, bao gồm cả những thứ từ dmesg, nên đi đến tập tin đó. Để nhắm mục tiêu tốt hơn:

kernel.*           -/var/log/dmesg

Nếu điều đó không thành công vì một số lý do, bạn có thể định kỳ (ví dụ: qua cron):

dmesg > /var/log/dmesg

Tùy thuộc vào mức độ lớn của bộ đệm dmesg (cái này được biên dịch vào kernel hoặc được đặt thông qua log_buf_lentham số) và hệ thống của bạn đã hoạt động được bao lâu, nó sẽ giữ một bản ghi nhật ký kernel kể từ khi nó khởi động.

Nếu bạn muốn ghi đầu ra dmesg liên tục vào một tệp, hãy sử dụng cờ -w (--follow).

dmesg --follow > mydmesg.log

4
+1 Có lẽ đáng nói là dmesg sử dụng bộ đệm vòng để nó không phát triển mà không bị ràng buộc và được giữ trong kernel để các thông điệp có thể được ghi lại trước những thứ như hệ thống tập tin thậm chí còn hoạt động.
msw

3

Nếu bạn sử dụng systemdthì bạn có thể lấy tất cả thông tin từ systemdtạp chí bằng cách sử dụng journalctl -k. syslogrsyslogkhông cần thiết nếu bạn sử dụng systemd.


0

PopSicle thực hiện điều này Tôi sử dụng chuyển hướng msdos cũ và nó được giới hạn thành một tệp .csv được mở trong một bảng tính bởi LibreOffice Calc trong thiết bị đầu cuối thử một cái gì đó như thế này

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"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.