บัฟเฟอร์วงแหวนเคอร์เนลอยู่ที่ตำแหน่งใดเมื่อเทียบกับ rsyslog


9

เป็นrsyslogเพียงชั้นนามธรรมที่ด้านบนของบัฟเฟอร์วงแหวนเคอร์เนล หรือเคอร์เนลบัฟเฟอร์นั้นเป็นเอ็นทิตี้ของมันเองและrsyslogการโต้ตอบของมันก็เหมือนกับแอพพลิเคชั่นอื่น ๆ ?

logs  syslog  dmesg 

คำตอบ:


6

แม้ว่าเอกสารหลาย ๆ ชิ้น (รวมถึงman dmesg) เรียกมันว่า "บัฟเฟอร์วงแหวนเคอร์เนล" แต่มันอาจจะดีกว่าที่จะอ้างถึงมันเป็นบัฟเฟอร์ล็อกเคอร์เนลเนื่องจาก "บัฟเฟอร์บัฟเฟอร์" เป็นคำทั่วไปและฉันเชื่อว่าเคอร์เนลยังใช้วงแหวน บัฟเฟอร์สำหรับสิ่งต่าง ๆ ที่ไม่เกี่ยวข้องอย่างสมบูรณ์ "printk buffer" ก็เหมาะสมเช่นกันหลังจากฟังก์ชั่นพื้นที่เคอร์เนลที่ใช้ในการเขียน

แล้วก็อาศัยอยู่ในพื้นที่ว่างของเคอร์เนลและอินเตอร์เฟซการอ่านมีให้ผ่านและอินเตอร์เฟซอ่านเขียนผ่านทาง/proc/kmsg /dev/kmsgดังนั้นถ้าเป็นรากคุณไป:

echo "Hello Kernel!" > /dev/ksmg

คุณจะเห็นมันถ้าคุณcat /dev/ksmg(คุณอาจไม่เห็นสิ่งนี้ปรากฏขึ้นในบันทึกใด ๆ - ดูความคิดเห็นของ Matthew Phipps ด้านล่างด้วยเหตุผลที่เป็นไปได้) นี่เป็นเอาต์พุตแบบ raw และไม่เหมือนกับสิ่งที่คุณเห็นจากdmesgหรือในไฟล์บันทึกของคุณ มีเอกสารเล็กน้อยเกี่ยวกับสิ่งนี้ที่จัดเตรียมไว้พร้อมกับเคอร์เนลซอร์ส แนะนำให้อ่านจาก/proc/kmsg(ไม่ใช่แบบเดียวกัน/dev/ksmg) หาก (s) syslog กำลังทำงานอยู่

Rsyslog เป็นหนึ่งในจำนวนของการใช้งานsyslog ที่ใช้กันทั่วไปใน linux เหล่านี้เป็นโปรแกรม userland ว่าข้อความมาเคอร์เนลจาก/proc/ksmgและข้อความจากกระบวนการ userland อื่น ๆ /dev/logผ่านทางซ็อกเก็ต


2
ฉันจะชี้ให้เห็นว่า rsyslog มี $ KLogPermitNonKernelFacility เป็นค่าเริ่มต้นซึ่งเป็นสาเหตุที่ข้อความที่ไม่ใช่เคอร์เนลจาก / proc / kmsg จะถูกละเว้นโดย rsyslog เว้นแต่คุณจะเปิดใช้ตัวเลือกนั้น สิ่งนี้อาจทำให้เกิดความสับสนจริง ๆ ได้เช่นตั้งแต่ Upstart เป็นต้นบันทึกไปยัง / proc / kmsg ด้วยสิ่งอำนวยความสะดวกที่ไม่ใช่เคอร์เนล
Vanessa Phipps
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.