是否可以过滤.xsession-errors 的内容?

是否可以过滤.xsession-errors 的内容?

大多数用户的 .xsession-errors 文件会变大,因为 gtk 和其他库会给出愚蠢的错误消息。

有没有办法减少愚蠢的错误消息但仍然有一个有用的.xsession-errors 文件?

答案1

是的,这是可能的。此解决方案已使用 Debian jessie 和wdm登录管理器进行了测试。

需要执行多个步骤:
步骤 8 至 10 是wdm具体的,可能看起来不同gdm,或kdm

  1. 以 root 身份登录
  2. /etc/X11/Xsession在编辑器中打开文件

  3. #!/bin/sh
    用以下代码替换文件中的第一行
    #!/bin/bash
  4. 找到行ERRFILE=$HOME/.xsession-errors并添加以下行ERRFILTER=$HOME/.xsession-errors_filter
  5. 找到行exec >>"$ERRFILE" 2>&1并将其替换为
    if [ -f $ERRFILTER ]; then exec > >(stdbuf -i0 -o0 -e0 grep -v -f "$ERRFILTER" >>"$ERRFILE") 2>&1 else exec >>"$ERRFILE" 2>&1 fi
  6. 保存文件并退出编辑器
  7. 在你的主目录中创建一个 .xsession-errors_filter 文件,并在那里写入你所做的错误消息的关键字不是想看。每行仅允许一个关键字/短语。
  8. 打开文件 /etc/X11/wdm/Xsession
  9. 找到行. /etc/X11/Xsession并将其替换为exec /etc/X11/Xsession
  10. 保存存档
  11. 仔细检查一切是否正确,否则 X11 可能无法启动
  12. 注销并登录 X

一些解释:

  • 我们需要 bash 来进行这次重定向,替换 /bin/sh,并将.(source) 更改为 exec
  • 然后我们使用 grep用于过滤。grep正在从文件“.xsession-errors_filter”读取过滤关键字
  • stdbuf 禁用 grep 缓冲,因此错误消息会立即写入文件
  • exec > >()将 shell 的所有输出重定向到子 shell(运行 grep)

相关内容