Debian
在 syslog 或 rsyslog 中,環形緩衝區、消息隊列和寫入緩衝區是否相同?
環形緩衝區、消息隊列和寫入緩衝區是否相同?如果不是,環形緩衝區、隊列和寫入緩衝區如何在 syslogd 或 rsyslogd 中協同工作?
- syslogd 的大多數實現會 在短時間內將消息排隊,並處理在此期間到達隊列的重複消息。
- 每次寫入文件時同步到磁碟可以延遲以加快寫入速度,例如
-
在文件名之前/etc/syslog.conf``*.debug;mail.none;news.none -/var/log/messages
當 syslogd 或 rsyslogd 將新日誌寫入環形緩衝區時,它是否也會將相同的新日誌寫入文件
/var/log/syslog
?在任何時候,環形緩衝區的內容是否總是文件內容的一部分/var/log/syslog
,或者它是否會領先於文件並使文件內容過時?
“環形緩衝區”用於記錄早期消息,即在任何 syslog 守護程序啟動之前發出的消息。這是從實時作業系統中採用的概念。
環形緩衝區資料結構只是核心記憶體的(預分配)區域,加上幾個指針。它可用於記錄核心啟動的瞬間。它完全不需要資源分配,也不指望任何已經在工作的東西。如果系統啟動時“出現問題”(到
rsyslogd
無法啟動的程度),dmesg
將顯示這些早期消息,這可能會有所幫助。當 Syslog 守護程序啟動時,它會讀取環形緩衝區,並生成/處理日誌條目。
稍後,當系統啟動並執行時,syslog 守護程序會執行正常的緩衝磁碟 I/O,寫入日誌文件,每次寫入後進行同步(請參閱 參考資料
man 3 fflush
)。但是,如果日誌文件名以“-
”開頭,則同步留給磁碟緩衝方案。