温馨提示×

怎么过滤linux syslog

小樊
50
2026-07-02 01:00:07
栏目: 智能运维

在 Linux 中“过滤 syslog”通常有几种常见场景,下面按常用程度逐一说明,你可以按需选用。


一、直接查看 / 过滤 syslog 文件

1️⃣ 查看系统日志文件

常见路径:

/var/log/syslog        # Debian / Ubuntu
/var/log/messages      # RHEL / CentOS

2️⃣ 用 grep 过滤

# 查看包含 ssh 的日志
grep ssh /var/log/syslog

# 忽略大小写
grep -i error /var/log/syslog

# 实时过滤
tail -f /var/log/syslog | grep ssh

3️⃣ 按时间过滤

grep "2025-01-20" /var/log/syslog

二、使用 journalctl(systemd 系统,推荐 ✅)

现代 Linux(Ubuntu 16+、CentOS 7+)都使用 systemd-journald

1️⃣ 按服务过滤

journalctl -u ssh
journalctl -u nginx

2️⃣ 按时间过滤

journalctl --since "2025-01-20 10:00" --until "2025-01-20 12:00"

3️⃣ 按优先级(错误 / 警告)

journalctl -p err
journalctl -p warning

优先级说明:

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

4️⃣ 实时查看

journalctl -f

5️⃣ 组合过滤(非常常用)

journalctl -u ssh -p err --since today

三、过滤特定程序 / 用户 / PID

1️⃣ 按 PID

journalctl _PID=1234

2️⃣ 按可执行文件

journalctl /usr/sbin/sshd

3️⃣ 按用户

journalctl _UID=1000

四、在 rsyslog 中配置过滤(从源头过滤)

如果你是想控制哪些日志被记录,而不是事后查看。

示例:只记录 ssh 的 info 以上日志

# /etc/rsyslog.d/ssh.conf
:programname, isequal, "sshd" {
    *.info    /var/log/sshd.log
    stop
}

然后重启:

systemctl restart rsyslog

五、常见问题排查示例

✅ 只看登录失败

journalctl -u ssh | grep "Failed"

✅ 看某台 IP 的日志

grep "192.168.1.100" /var/log/syslog

✅ 看最近的 100 条日志

journalctl -n 100

六、总结(快速对照)

需求 推荐方式
实时查看 journalctl -f
按服务 journalctl -u xxx
按错误 journalctl -p err
老系统 grep /var/log/syslog
控制记录 rsyslog 规则

如果你能告诉我:

  • ✅ 你的 Linux 发行版
  • ✅ 想过滤 哪种日志(ssh / 内核 / 应用 / 错误)
  • ✅ 是 查看 还是 丢弃/不记录

我可以给你一条最精确的命令或配置

0