![如何防止模块用无用的输出淹没我的内核日志?](https://linux22.com/image/66595/%E5%A6%82%E4%BD%95%E9%98%B2%E6%AD%A2%E6%A8%A1%E5%9D%97%E7%94%A8%E6%97%A0%E7%94%A8%E7%9A%84%E8%BE%93%E5%87%BA%E6%B7%B9%E6%B2%A1%E6%88%91%E7%9A%84%E5%86%85%E6%A0%B8%E6%97%A5%E5%BF%97%EF%BC%9F.png)
我正在使用该atmel_mxt_ts
模块,它会用每秒大约 10 条无用的状态消息淹没我的内核日志。我担心这会使我的日志变得庞大并导致对 SSD 进行不必要的写入。有没有什么办法可以让这个模块的输出静音,或者至少让 systemd 日志忽略它?
例子:
Jun 08 22:44:52 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0000:01: Status: 08
Jun 08 22:44:52 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0001:01: Status: 08
Jun 08 22:44:52 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0000:01: Status: 08
Jun 08 22:44:52 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0001:01: Status: 08
Jun 08 22:44:52 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0000:01: Status: 08
Jun 08 22:44:52 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0001:01: Status: 08
Jun 08 22:44:52 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0000:01: Status: 08
Jun 08 22:44:52 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0001:01: Status: 08
Jun 08 22:44:52 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0000:01: Status: 08
Jun 08 22:44:52 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0001:01: Status: 08
Jun 08 22:44:51 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0000:01: Status: 08
Jun 08 22:44:51 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0001:01: Status: 08
Jun 08 22:44:51 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0000:01: Status: 08
Jun 08 22:44:51 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0001:01: Status: 08
Jun 08 22:44:51 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0000:01: Status: 08
Jun 08 22:44:51 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0001:01: Status: 08
Jun 08 22:44:51 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0000:01: Status: 08
Jun 08 22:44:51 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0001:01: Status: 08
Jun 08 22:44:51 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0000:01: Status: 08
Jun 08 22:44:51 ben-chromebook kernel: atmel_mxt_ts i2c-ATML0001:01: Status: 08
答案1
如果您正在使用,syslog-ng
则可以使用该filter
指令:
filter demo_filter { not match ("atmel_mxt_ts i2c-ATML0000:01: Status: 08"); };
有关过滤的更多详细信息,请syslog-ng
参阅https://www.balabit.com/sites/default/files/documents/syslog-ng-ose-latest-guides/en/syslog-ng-ose-guide-admin/html-single/index.html#filters
如果您正在使用,rsyslog
您可以使用例如基于属性的过滤器:
:msg, !contains, "atmel_mxt_ts i2c-ATML0000:01: Status: 08"
有关过滤的更多详细信息,请rsyslog
参阅http://www.rsyslog.com/doc/rsyslog_conf_filter.html
为了扩大答案并对给定的评论做出反应:
版本 216 之前的 systemd 日志默认将消息转发到 syslog,从版本 216 开始,消息不再转发,因为 rsyslog 或 syslog-ng(从版本 3.6 开始)将从日志本身提取消息(请参阅https://wiki.archlinux.org/index.php/Systemd/Journal#Journald_in_conjunction_with_syslog)。
此外,journald.confStorage=
指令默认设置为auto
,表示仅当目录 /var/log/journal 存在时日志才是持久的(请参阅man journald.conf
.
因此,通过过滤系统日志,您应该能够防止对 SSD 进行不需要的写入,除非您有持久的日志日志。在这种情况下,您还需要将Storage=
指令设置为none
or volatile
。