เป็นrsyslogเพียงชั้นนามธรรมที่ด้านบนของบัฟเฟอร์วงแหวนเคอร์เนล หรือเคอร์เนลบัฟเฟอร์นั้นเป็นเอ็นทิตี้ของมันเองและrsyslogการโต้ตอบของมันก็เหมือนกับแอพพลิเคชั่นอื่น ๆ ?
เป็นrsyslogเพียงชั้นนามธรรมที่ด้านบนของบัฟเฟอร์วงแหวนเคอร์เนล หรือเคอร์เนลบัฟเฟอร์นั้นเป็นเอ็นทิตี้ของมันเองและrsyslogการโต้ตอบของมันก็เหมือนกับแอพพลิเคชั่นอื่น ๆ ?
คำตอบ:
แม้ว่าเอกสารหลาย ๆ ชิ้น (รวมถึง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ผ่านทางซ็อกเก็ต