Linux 在一个会话中生成千兆字节的日志

Linux 在一个会话中生成千兆字节的日志

在我运行 Linux Mint 18.3 的 HP Pavilion 笔记本电脑上,我遇到了一个问题,系统仅在一两个会话中(每个会话不超过半天)就生成了千兆字节的日志文件。

生成的大日志文件是/var/log/kern.log/var/log/syslog。他们都填写了以下报告:

Feb 27 13:54:38 workstation kernel: [  390.503777] pcieport 0000:00:1d.0: AER: Corrected error received: id=00e8
Feb 27 13:54:38 workstation kernel: [  390.503786] pcieport 0000:00:1d.0: can't find device of ID00e8
Feb 27 13:54:38 workstation kernel: [  390.503802] pcieport 0000:00:1d.0: AER: Multiple Corrected error received: id=00e8
Feb 27 13:54:38 workstation kernel: [  390.504154] pcieport 0000:00:1d.0: PCIe Bus Error: severity=Corrected, type=Physical Layer, id=00e8(Receiver ID)
Feb 27 13:54:38 workstation kernel: [  390.504158] pcieport 0000:00:1d.0:   device [8086:9d1b] error status/mask=00000001/00002000
Feb 27 13:54:38 workstation kernel: [  390.504162] pcieport 0000:00:1d.0:    [ 0] Receiver Error         (First)
Feb 27 13:54:38 workstation kernel: [  390.504172] pcieport 0000:00:1d.0: AER: Corrected error received: id=00e8
Feb 27 13:54:38 workstation kernel: [  390.504180] pcieport 0000:00:1d.0: PCIe Bus Error: severity=Corrected, type=Physical Layer, id=00e8(Receiver ID)
Feb 27 13:54:38 workstation kernel: [  390.504185] pcieport 0000:00:1d.0:   device [8086:9d1b] error status/mask=00000001/00002000
Feb 27 13:54:38 workstation kernel: [  390.504190] pcieport 0000:00:1d.0:    [ 0] Receiver Error         (First)

一而再,再而三。这个错误过去常常在启动时出现,但由于启动后它似乎并没有影响我的日常工作体验,因此我通过添加到pci=nomis然后/etc/default/grub运行update-grub​​.

然而,我显然只是抑制了这些错误消息的打印输出,因为日志现在已经充满了它们。

我还尝试使用来logrotate限制日志文件的文件大小,但这没有任何效果,因为日志文件在一个会话中就变得那么大。

有人知道如何将这些日志文件保持在可接受的大小(最多几百MB)吗?因为现在我经常必须手动删除这些日志文件,以防止它们占用我的整个磁盘空间。

编辑:输出lspci -tv

-[0000:00]-+-00.0  Intel Corporation Sky Lake Host Bridge/DRAM Registers
           +-02.0  Intel Corporation Sky Lake Integrated Graphics
           +-04.0  Intel Corporation Skylake Processor Thermal Subsystem
           +-14.0  Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller
           +-14.2  Intel Corporation Sunrise Point-LP Thermal subsystem
           +-16.0  Intel Corporation Sunrise Point-LP CSME HECI
           +-17.0  Intel Corporation Sunrise Point-LP SATA Controller [AHCI mode]
           +-1c.0-[01]----00.0  NVIDIA Corporation GM108M [GeForce 940MX]
           +-1c.4-[02]----00.0  Realtek Semiconductor Co., Ltd. RTS522A PCI Express Card Reader
           +-1c.5-[03]----00.0  Realtek Semiconductor Co., Ltd. RTL8101/2/6E PCI Express Fast/Gigabit Ethernet controller
           +-1d.0-[04]----00.0  Realtek Semiconductor Co., Ltd. RTL8723BE PCIe Wireless Network Adapter
           +-1f.0  Intel Corporation Sunrise Point-LP LPC Controller
           +-1f.2  Intel Corporation Sunrise Point-LP PMC
           +-1f.3  Intel Corporation Sunrise Point-LP HD Audio
           \-1f.4  Intel Corporation Sunrise Point-LP SMBus

答案1

从您的日志中,我们看到 PCI 1d.0 中的设备正在生成大量日志。

 pcieport 0000:00:**1d.0**

借助所请求的命令lspci -tv,我们可以看到它是您的 realtek 设备。众所周知,它们速度慢、故障多且不可靠。

1d.0-[04]----00.0 Realtek Semiconductor Co., Ltd. RTL8723BE PCIe Wireless Network Adapter

因此,我建议作为一个短期解决方案,简单地指示rsyslog丢弃所有这些日志/错误。

配置rsyslog为忽略所有这些消息,如下所示:

添加作为第一行你的/etc/rsyslog.conf

:msg, contains, "0000:00:1d.0:" ~

添加此行后,您需要重新启动该rsyslog服务,否则它只能在下次重新启动时起作用。

sudo service rsyslog restart

丢弃不需要的消息

请注意,该语句位于 的顶部rsyslog.conf。这使得它在任何其他操作语句之前执行。因此,收到的每条消息都将根据字符串进行检查,如果找到匹配,则将其丢弃。

至于长期解决方案,请购买另一张与您的笔记本电脑品牌和型号兼容的 Wifi PCIe 卡。瑞昱的bug太多了。

有关的:使用华硕 USB-N13 适配器的 Wi-Fi 问题

补充笔记:

  • 8086:9d1b 是你的 PCI 控制器;
  • 我还建议作为OP的线索,但它没有解决问题,尝试将pci=nomsipci=noaer作为内核参数。看PCIe 总线错误严重性;
  • 当日志文件轮换时,如果您不需要保留日志历史记录,请不要忘记删除旧日志;
  • 一个可能的中期解决方案是使用 WiFi 棒并将 Realtek WiFi 模块列入黑名单;
  • 我在问题中添加了 [realtek] 和 [rsyslog] 标签。

相关内容