【问题标题】:Set systemd journalctl to ignore process将 systemd journalctl 设置为忽略进程
【发布时间】:2014-05-30 19:16:09
【问题描述】:

我的journalctl 到处都是gnome-session 警告。我已将问题追溯到谷歌浏览器,警告相对无害。但是,它淹没了我的日记输出,坦率地说,如果我确实需要检查它,我将无法找到我需要的东西。

May 30 12:13:49 hostname gnome-session[1347]: Window manager warning: meta_window_activate called by a pager with a 0 timestamp; the pager needs to be fixed.

坦率地说,这是一个 Chrome 问题,我会先解决这个问题。但是有没有办法让journalctl 命令抑制某个进程的输出?我想完全禁用 gnome-session 日志记录。

【问题讨论】:

    标签: systemd


    【解决方案1】:

    这个问题似乎更适合Unix & Linux

    尽管如此,在阅读日志时能够过滤掉单元可以很容易地通过管道传递到grep -v,即使遵循(使用grep的--line-buffered参数)就像

    journalctl -f | grep --line-buffered -v "gnome"
    

    这仍然很糟糕,因为现在没有有用的着色。为 journalctl 构造命令参数会带来更好的体验。

    JARGS=`journalctl -F _COMM | sed -e 's/gnome.*//' -e 's/^/_COMM=/' | xargs`
    journalctl -a -f $JARGS
    

    现在,使用$!gnome 将 gnome 行隐藏在 less 中时,follow 的工作方式与分页一样好。 哇!

    遗憾的是 systemctl 和 journalctl 不允许包含/排除的正则表达式匹配。


    在个人使用系统上(由于 gnome-session 的烦恼,我猜你是在使用它)有一些设置可能对设置有用。

    编辑系统journald.conf

    1. 通过引导拆分日志。
      验证 Storage= persistauto(默认)。
      并创建sudo mkdir -p /var/log/journal
    2. 按时间限制存储使用。
      MaxRetentionSec=1week

    重启以有效重启 systemd-journald.service。

    然后就可以使用了

    journalctl -a -b -f $JARGS # -b to limit to current boot 
    

    或者你想要的任何参数,没有不需要的 gnome-session 东西。

    【讨论】:

    • 当使用 $JARGS 技巧时(例如,gnome 被过滤掉),kernel 记录不会显示出来。有什么建议么? (通过内核记录我的意思是例如:Dec 15 21:59:17 service-ad-1-1.localdomain kernel: RTNL: assertion failed at net/core/net_namespace.c (187)
    • 同意@Thell“真可惜”没有正则表达式 --unit 选择或可能的功能 journalctl --unit-exclude 很烦人。
    • 有趣——journalctl gnu mashup 用一个变量通过管道传送到 journalcti。就像 grep 管道到 grep :)
    猜你喜欢
    • 1970-01-01
    • 2012-06-15
    • 2021-01-26
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2018-06-17
    • 2020-07-10
    • 1970-01-01
    相关资源
    最近更新 更多