Debian

在 syslog 或 rsyslog 中,環形緩衝區、消息隊列和寫入緩衝區是否相同?

  • April 5, 2021

環形緩衝區、消息隊列和寫入緩衝區是否相同?如果不是,環形緩衝區、隊列和寫入緩衝區如何在 syslogd 或 rsyslogd 中協同工作?

當 syslogd 或 rsyslogd 將新日誌寫入環形緩衝區時,它是否也會將相同的新日誌寫入文件/var/log/syslog?在任何時候,環形緩衝區的內容是否總是文件內容的一部分/var/log/syslog,或者它是否會領先於文件並使文件內容過時?

“環形緩衝區”用於記錄早期消息,即在任何 syslog 守護程序啟動之前發出的消息。這是從實時作業系統中採用的概念。

環形緩衝區資料結構只是核心記憶體的(預分配)區域,加上幾個指針。它可用於記錄核心啟動的瞬間。它完全不需要資源分配,也不指望任何已經在工作的東西。如果系統啟動時“出現問題”(到rsyslogd無法啟動的程度),dmesg將顯示這些早期消息,這可能會有所幫助。

當 Syslog 守護程序啟動時,它會讀取環形緩衝區,並生成/處理日誌條目。

稍後,當系統啟動並執行時,syslog 守護程序會執行正常的緩衝磁碟 I/O,寫入日誌文件,每次寫入後進行同步(請參閱 參考資料man 3 fflush)。但是,如果日誌文件名以“ -”開頭,則同步留給磁碟緩衝方案。

引用自:https://unix.stackexchange.com/questions/643119