เนื้อหา dmesg สามารถเข้าสู่ไฟล์ได้อย่างไร?


18

ฉันใช้ระบบปฏิบัติการ Linux ที่สร้างขึ้นตั้งแต่เริ่มต้น ฉันต้องการบันทึกบัฟเฟอร์ข้อความเคอร์เนล (dmesg) ลงในไฟล์ที่จะคงอยู่ระหว่างการรีบูต

ฉันพยายามเรียกใช้ syslogd แต่เพิ่งเปิดไฟล์บันทึกใหม่ / var / log / messages โดยไม่มีบัฟเฟอร์ข้อความเคอร์เนลที่มีอยู่หรือข้อความใหม่ใด ๆ ที่เคอร์เนลสร้างขึ้นหลังจากเปิด syslogd

บัฟเฟอร์ข้อความเคอร์เนลจะถูกบันทึกลงในไฟล์บันทึกถาวรได้อย่างไร?


คุณกำลังใช้ syslogd ใดอยู่: sysklogd, busybox, inetutils, systemd, rsyslog, อื่น ๆ
Gilles 'หยุดชั่วร้าย'

คำตอบ:


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 ใช้ ring buffer เพื่อให้มันไม่เติบโตโดยไม่มีข้อผูกมัดและถูกเก็บไว้ในเคอร์เนลเพื่อให้สามารถบันทึกข้อความก่อนสิ่งต่าง ๆ เช่นระบบแฟ้มยังคงทำงานอยู่
msw

3

ถ้าคุณใช้systemdแล้วคุณจะได้รับข้อมูลจากวารสารใช้systemd และไม่จำเป็นถ้าคุณใช้ systemdjournalctl -ksyslogrsyslog


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"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.