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

Art*_*nov 22 logs systemd-journald rtkit-daemon

journalctl -b | grep Supervising | wc -l
2819
Run Code Online (Sandbox Code Playgroud)

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

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

rsyslog这里没有,journald 也不支持过滤。

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

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

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

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

MC6*_*020 25

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

\n

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

\n

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

\n

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

\n
[Service]\nLogLevelMax=X\n
Run Code Online (Sandbox Code Playgroud)\n

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

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

对于选择的给定级别,将不会输出所有更高级别的日志。\n请注意,如果在任何 systemd service .conf 文件中没有指定日志级别,则守护程序的日志级别默认为 7,换句话说,允许最高级别冗长的。

\n

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

\n

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

\n
systemctl daemon-reload\nsystemctl restart rtkit-daemon.service\n
Run Code Online (Sandbox Code Playgroud)\n
\n

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

\n

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

\n
[Service]\nStandardOutput=null\nStandardError=null\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

  • 一种更简单的方法是运行“sudo systemctl edit rtkit-daemon.service”,然后将这两行放入其中。无需费力查找目录或重新加载守护进程。但仍然需要重新启动服务! (7认同)
  • 解决rtkit垃圾邮件日志问题似乎只需要步骤B。使用@SamMason的`sudo systemctl edit rtkit-daemon.service`,似乎设置`LogLevelMax=6`就足够了。我认为步骤C很危险。不要将日志文件设置为空。如果确实存在需要注意的错误怎么办? (6认同)