解析 Linux syslog 一般从日志位置、格式、查看方式、过滤/分析、以及常见字段含义这几个方面入手。下面按实用角度系统说明。
不同发行版略有差异:
| 发行版 | 主要日志路径 |
|---|---|
| Debian / Ubuntu | /var/log/syslog |
| RHEL / CentOS / Rocky | /var/log/messages |
| 通用 | /var/log/ 目录下 |
| systemd 系统 | journalctl(不是文件) |
常见文件示例:
/var/log/syslog
/var/log/messages
/var/log/kern.log
/var/log/auth.log
/var/log/cron
典型 syslog 一行示例:
Oct 12 10:23:45 hostname sshd[12345]: Accepted password for root from 192.168.1.10 port 22
| 字段 | 含义 |
|---|---|
Oct 12 10:23:45 |
时间戳(默认不含年份) |
hostname |
产生日志的主机名 |
sshd |
服务/程序名 |
[12345] |
进程 PID(可选) |
Accepted password for root ... |
日志内容 |
tail -f /var/log/syslog
tail -n 100 /var/log/syslog
less /var/log/syslog
常用操作:
G:跳到末尾/error:搜索q:退出grep sshd /var/log/syslog
grep "Oct 12 10:" /var/log/syslog
grep -i error /var/log/syslog
grep "192.168.1.10" /var/log/syslog
如果是 systemd,推荐用 journalctl:
journalctl
journalctl -f
journalctl -u sshd
journalctl --since "2025-01-01" --until "2025-01-02"
journalctl -k
| 日志示例 | 含义 |
|---|---|
sshd[...]: Accepted password |
SSH 登录成功 |
sshd[...]: Failed password |
SSH 登录失败 |
sudo: user : TTY=... |
sudo 使用记录 |
kernel: ... |
内核日志 |
Out of memory |
OOM |
segmentation fault |
程序崩溃 |
grep "Failed password" /var/log/syslog | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr
awk '{print $1, $2, $3}' /var/log/syslog | cut -d: -f1 | uniq -c
syslog 会轮转:
/var/log/syslog
/var/log/syslog.1
/var/log/syslog.2.gz
查看历史:
zcat /var/log/syslog.2.gz | less
journalctl/var/log/ 下的专项日志grep + awk + sort + uniq 快速定位问题如果你愿意,可以:
我可以帮你逐行解析并定位问题原因。