使用“监督 Z 用户 Y 进程的 X 线程”来阻止 rtkit-daemon 发送垃圾邮件日志

使用“监督 Z 用户 Y 进程的 X 线程”来阻止 rtkit-daemon 发送垃圾邮件日志
journalctl -b | grep Supervising | wc -l
2819

发行版是 Fedora 35,vanilla,由 PipeWire 运行。

我很确定所有现代 Linux 发行版都会受到影响,但人们并不关心。

这里没有rsyslogjournald 不支持过滤。

这真是太荒谬了。我肯定可以修补它,但问题是如何在不应用修补程序和重建的情况下完成它。这个东西,/usr/libexec/rtkit-daemon甚至没有手册页,也没有--help提供任何线索。

有一个相关问题也从未得到解答:rtkit:列出它正在“监督”的线程?

我只能想到运行一些包装器,它只是禁用与/system 日志记录rtkit-daemon相关的所有功能。/dev/log有人见过类似的东西吗?

我已经提交了一份错误报告万一。

答案1

正如 Artem 正确地写道,systemd 日志的过滤功能非常有限。因此,限制服务或桌面应用程序冗长程度的唯一解决方案是在任何类型的进一步处理之前,在日志记录管道中尽早组织过滤。

为了对 systemd 服务实现这一点:

A/找到与您要调整的服务关联的目录。通常基于(/usr)/lib/systemd/system在包安装时分发的服务,例如 rtkit-daemon。在这个特殊情况下:rtkit-daemon.service.d

乙/在此目录中(或者更好地在系统范围的配置子目录中,/etc/systemd/system/rtkit-daemon.service.d因为它不会通过进一步的软件包升级而被静默删除)编辑或创建一个log.conf文件以插入以下语句:

[Service]
LogLevelMax=X

X 代表所需的数字日志级别或其相关的字母符号,取自以下列表:

  • 0 或紧急情况(最高优先级消息)
  • 1 或警报,
  • 2 或关键,
  • 3或错误,
  • 4 或警告,
  • 5 或通知,
  • 6 或信息
  • 7 或 debuginfo(最低优先级消息)

对于选择的给定级别,所有更高级别的日志都不会输出。请注意,如果在任何 systemd 服务 .conf 文件中未指定日志级别,则守护程序的日志级别默认为 7,换句话说,允许最高级别的详细程度。

关于标题中所述的您的具体需求,LogLevelMax=5(通知)应该足够了(评论中报告的 6 个)。

C/保存并退出编辑器,然后运行以下两个命令:

systemctl daemon-reload
systemctl restart rtkit-daemon.service

Nota Bene:自从“新风格守护进程”(原文如此)......将在自己的会话中执行,标准输入连接到 /dev/null ,标准输出/错误连接到 systemd-journald.service(8) 日志服务日志记录可以通过任何简单的 (f)print(f) 来实现。然后可以通过简单地将其 stdout 和 stderr 重定向到 /dev/null 来完全静默守护进程。

虽然我很容易想象不推荐这样做(因为明智会命令至少让关键错误进入系统日志),这种重定向可以通过以下语句来实现:

[Service]
StandardOutput=null
StandardError=null

学分: 答案基于systemd.exec 文档

相关内容