温馨提示×

怎么过滤CentOS message信息

小樊
40
2026-08-04 05:35:49
栏目: 智能运维

在 CentOS 系统中,过滤 messages 日志信息 常见有几种方式,取决于你是想实时查看按条件过滤,还是长期过滤/丢弃某些日志。下面按常用场景给你说明。


一、查看 /var/log/messages 并过滤

1️⃣ 使用 grep 过滤关键字

grep "error" /var/log/messages

忽略大小写:

grep -i "error" /var/log/messages

过滤多个关键字:

grep -E "error|fail|timeout" /var/log/messages

2️⃣ 实时查看并过滤(类似 tail -f)

tail -f /var/log/messages | grep "sshd"

只看 ssh 登录日志:

tail -f /var/log/messages | grep "sshd"

3️⃣ 按时间过滤

查看某一天的日志:

grep "Aug 20" /var/log/messages

二、使用 journalctl(CentOS 7+)

CentOS 7 以后很多日志由 systemd-journald 管理。

1️⃣ 查看所有 messages

journalctl

2️⃣ 按服务过滤

journalctl -u sshd

3️⃣ 按优先级过滤(只看错误)

journalctl -p err

优先级说明:

0 emerg
1 alert
2 crit
3 err
4 warning
5 notice
6 info
7 debug

4️⃣ 实时查看

journalctl -f

5️⃣ 按时间过滤

journalctl --since "2025-01-01" --until "2025-01-02"

三、永久过滤 / 丢弃某些 messages(rsyslog)

如果你是想 不让某些日志写入 /var/log/messages

1️⃣ 编辑 rsyslog 配置

vim /etc/rsyslog.conf

或新建:

vim /etc/rsyslog.d/ignore.conf

2️⃣ 示例:忽略 cron 日志

cron.* ~

或(新版本 rsyslog):

:programname, isequal, "cron" stop

3️⃣ 忽略包含某关键字的日志

:msg, contains, "testlog" stop

4️⃣ 重启 rsyslog

systemctl restart rsyslog

⚠️ 注意:顺序很重要,stop 要放在规则前面。


四、按服务 / 模块过滤(推荐)

把不同服务日志写到不同文件,而不是全部进 messages:

if $programname == 'nginx' then /var/log/nginx.log
& stop

五、总结(快速选择)

需求 推荐方式
临时查看 grep / tail -f
systemd 服务 journalctl
长期丢弃 rsyslog 规则
实时分析 journalctl -f

如果你能具体说一下:

  • CentOS 版本(6 / 7 / 8 / Stream)
  • 想过滤 哪种日志(sshd / kernel / cron / 自定义)
  • 查看 还是 彻底不记录

我可以给你一条最合适、可直接用的配置

0