在 Linux 中查看日志有多种强大的命令和工具,根据你的具体需求(如实时跟踪、搜索、过滤等)可以选择不同的命令。以下是一些最常用和高效的方法:
1. 基础查看命令
tail
- 查看日志尾部(最常用)
-
实时跟踪最新日志:
bashtail -f /var/log/syslog # 实时跟踪文件变化(默认10行) tail -f -n 20 /var/log/syslog # 实时跟踪并显示最后20行
-
查看最后100行:
bashtail -n 100 /var/log/nginx/access.log
head
- 查看日志头部
bash
head -n 50 /var/log/syslog # 查看前50行
cat
- 全部输出(适合小文件)
bash
cat /var/log/syslog # 一次性显示全部内容(大文件慎用)
less
/ more
- 分页查看(推荐大文件)
bash
less /var/log/syslog # 支持上下翻页、搜索(按 `/` 搜索,`q` 退出)
more /var/log/syslog # 基本分页(空格翻页)
2. 高级过滤与搜索
grep
- 关键字过滤
bash
grep "ERROR" /var/log/syslog # 搜索包含 "ERROR" 的行
grep -i "error" /var/log/syslog # 忽略大小写
grep -C 3 "error" /var/log/syslog # 显示匹配行及前后3行
grep -v "INFO" /var/log/syslog # 排除包含 "INFO" 的行
awk
- 按列过滤
bash
awk '{print $1}' /var/log/access.log # 输出第一列(如IP地址)
awk '$9 == 500 {print $7}' /var/log/access.log # 找出状态码500的请求路径
sed
- 流编辑器
bash
sed -n '10,20p' /var/log/syslog # 只输出第10到20行
3. 组合命令(高效排查)
实时跟踪并过滤关键字:
bash
tail -f /var/log/nginx/access.log | grep "404"
统计错误出现的次数:
bash
grep -c "ERROR" /var/log/syslog
查看某个时间段的日志:
bash
sed -n '/2023-10-27 14:00:00/,/2023-10-27 15:00:00/p' /var/log/syslog
4. 专用日志工具
journalctl
- systemd 日志(现代Linux发行版)
bash
journalctl -f # 实时跟踪系统日志
journalctl -u nginx.service # 查看nginx服务的日志
journalctl --since "2023-10-27 14:00:00" --until "2023-10-27 15:00:00"
logrotate
- 日志轮转配置
(不是直接查看日志,但管理日志分割)
5. 高级工具(如需复杂分析)
multitail
:同时监控多个日志文件(需安装)lnav
:日志文件浏览器(支持语法高亮、SQL查询)GoAccess
:实时Web日志分析工具
总结推荐
场景 | 推荐命令 |
---|---|
实时跟踪日志 | tail -f 或 journalctl -f |
关键词搜索 | grep "关键词" [文件] |
大文件浏览 | less [文件] |
按时间筛选 | journalctl --since "时间" 或 sed |
结构化分析 | awk |