登录到 /dev/xconsole 无法正常工作

登录到 /dev/xconsole 无法正常工作

我正在使用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确实有限吗?我可以增加尺寸吗?

答案1

从技术上来说,/dev/xconsole没有尺寸因为它是一个命名管道又名。但 Linux 内核在使用时为每个此类对象提供一个缓冲区,64 KiB(在 Linux 3.x 中)或 4 KiB(在 Linux 2.x 中)。不在文件系统中,仅在内存中。看https://stackoverflow.com/questions/4624071/pipe-buffer-size-is-4k-or-64khttps://unix.stackexchange.com/a/229544/80483了解更多信息。

如果应用程序(xconsole)没有及时读取其数据,那么缓冲区就会变满; syslog 无法在那里写入,并且为了避免被阻止,会丢弃消息。

相关内容