Logs

登錄到 /dev/xconsole 無法正常工作

  • September 14, 2015

我正在使用rsyslog,我想將日誌發送到/dev/xconsole.

我有以下相關行/etc/rsyslog.conf

*.*;cron.!=info;mail.!=info   |/dev/xconsole

這僅部分有效。看起來好像/dev/xconsole只能儲存cca 64kB。一旦緩衝區已滿,新的日誌就會失去

我做了以下測試:

1) add to `/etc/rsyslog.conf`
*.*;cron.!=info;mail.!=info    /tmp/aaa

2) reboot

3) cat /dev/xconsole > /tmp/bbb

4) diff /tmp/aaa /tmp/bbb

現在,aaa 和 bbb 應該是一樣的。但他們不是。aaa 包含完整的日誌,而 bbb 缺少最後 229 行

我該如何解決這個問題?尺寸/dev/xconsole確實有限嗎?我可以增加尺寸嗎?

從技術上講,/dev/xconsole它沒有大小,因為它是一個命名管道又名fifo。但是 Linux 核心在使用時為每個這樣的對象提供一個緩衝區,64 KiB(在 Linux 3.x 中)或 4 KiB(在 Linux 2.x 中)。不在文件系統中,僅在記憶體中。有關更多資訊,請參閱https://stackoverflow.com/questions/4624071/pipe-buffer-size-is-4k-or-64k>和<https://unix.stackexchange.com/a/229544/80483

如果應用程序(xconsole)沒有及時讀取它的數據,那麼緩衝區就會變滿;syslog 不能在那裡寫入,並且為了避免被阻止,會丟棄消息。

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