核心環形緩衝區相對於 rsyslog 位於何處?

核心環形緩衝區相對於 rsyslog 位於何處?

rsyslog只是內核環形緩衝區之上的抽象層嗎?或者內核環形緩衝區是它自己的實體並且rsyslog其交互就像任何其他“應用程式”一樣?

答案1

儘管各種文件(包括 參考資料man dmesg)將其稱為“內核環形緩衝區”,但最好將其稱為內核日誌緩衝區,因為“環形緩衝區”是一個通用術語,並且我相信內核也使用環形緩衝區各種完全不相關的事物的緩衝區。 「printk 緩衝區」也是適當的,在內核空間函數用來寫入它之後。

無論如何,它駐留在內核空間中,透過 提供讀取接口,/proc/kmsg並透過 提供讀寫介面/dev/kmsg。所以如果你以root身份去:

echo "Hello Kernel!" > /dev/ksmg

如果您隨後就會看到它cat /dev/ksmg(但是,您可能不會在任何日誌中看到這一點 - 請參閱下面 Matthew Phipps 的評論以了解可能的原因)。這是原始輸出,與您dmesg在日誌檔案中看到的內容並不完全相同。有一點一些文檔關於這一點隨內核原始碼一起提供。如果 (r)syslog 正在運行,建議從/proc/kmsg(與 不同)讀取。/dev/ksmg

Rsyslog 是眾多日誌之一系統日誌Linux 上常用的實作。這些是用戶態應用程序,/proc/ksmg透過套接字從核心訊息和其他用戶態進程獲取訊息/dev/log

相關內容