使用“監督 Z 使用者的 Y 程序的 X 執行緒”阻止 rtkit-daemon 向垃圾郵件發送日誌
journalctl -b | grep Supervising | wc -l 2819
發行版是 Fedora 35,香草,由 PipeWire 執行。
我很確定所有現代 Linux 發行版都會受到影響,但人們並不在意。
這裡沒有
rsyslog
,journald
不支持過濾。這越來越荒謬了。我可以肯定地修補它,但問題是如何在不應用更新檔和重建的情況下完成它。這個東西,
/usr/libexec/rtkit-daemon
,甚至沒有手冊頁,也沒有--help
提供任何線索。還有一個相關問題也從未得到解答:rtkit: list threads it is “supervising”?
我只能考慮
rtkit-daemon
通過一些簡單地禁用與/dev/log
/system 日誌記錄相關的所有功能的包裝器來執行。有沒有人見過這樣的事情?我已經送出了一份錯誤報告以防萬一。
正如 Artem 所寫的,systemd 期刊的過濾能力非常有限。因此,限制服務或桌面應用程序冗長的唯一解決方案是在日誌管道中更早地組織過濾,然後再進行任何類型的進一步處理。
為了實現這一點 systemd 服務:
**A/**找到與您要調整的服務關聯的目錄。通常基於在
(/usr)/lib/systemd/system
包安裝時分發的服務,例如 rtkit-daemon。在這種特殊情況下:rtkit-daemon.service.d
**B/**在這個目錄中,(或者在系統範圍的配置子目錄中更好,
/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,換句話說,允許最高級別的詳細資訊。
**C/**保存並退出編輯器,然後執行以下兩個命令:
systemctl daemon-reload systemctl restart rtkit-daemon.service
注意事項:由於“新式守護程序”(原文如此)……將在它們自己的會話中執行,標準輸入連接到 /dev/null,標準輸出/錯誤連接到 systemd-journald.service(8) 日誌記錄服務日誌記錄可以可以通過任何簡單的 (f)print(f) 來實現。然後可以通過簡單地將其 stdout 和 stderr 重定向到 /dev/null 來完全使守護程序靜音。
雖然我很容易想像這不推薦,但可以通過以下語句實現此重定向:
[Service] StandardOutput=null StandardError=null
學分:根據systemd.exec 文件回答