日志查询常用命令速查表
1. 实时监控日志
命令 | 说明 | 示例 |
---|---|---|
tail -f |
实时追踪日志末尾 | tail -f catalina.out |
tail -f + grep |
过滤实时关键词 | `tail -f app.log |
multitail |
多文件同时监控(需安装) | multitail -i app.log -i api.log |
2. 关键词搜索
命令 | 说明 | 示例 |
---|---|---|
grep |
基础关键词搜索 | grep "NullPointer" catalina.out |
grep -i |
忽略大小写 | grep -i "error" app.log |
grep -C |
显示上下文 | grep -C 10 "OOM" app.log (前后10行) |
grep -E |
正则匹配 | `grep -E "ERROR |
zgrep |
搜索压缩日志 | zgrep "404" access.log.gz |
3. 时间范围过滤
命令 | 说明 | 示例 |
---|---|---|
sed |
按时间段截取日志 | sed -n '/2023-10-25 14:00:/,/2023-10-25 15:00:/p' app.log |
awk |
时间+关键词组合过滤 | awk '/14:00:/,/15:00:/ && /ERROR/' app.log |
journalctl |
系统日志时间过滤(Systemd) | journalctl --since "2023-10-25 14:00" --until "15:00" |
4. 日志统计与分析
命令 | 说明 | 示例 |
---|---|---|
wc -l |
统计行数 | `grep "ERROR" app.log |
awk |
按列统计 | awk '{count[$3]++} END {for(k in count) print k, count[k]}' app.log (统计日志级别) |
`sort | uniq` | 去重统计 |
5. 分页与查看
命令 | 说明 | 示例 |
---|---|---|
less |
分页浏览(支持搜索) | less app.log → 按 / 搜索,Shift+G 跳末尾 |
head / tail |
查看首尾部分 | tail -n 100 app.log (末尾100行) |
lnav |
高级日志查看器(时间着色、语法高亮) | lnav app.log (需安装) |
6. 多文件与压缩日志
命令 | 说明 | 示例 |
---|---|---|
grep -r |
递归搜索目录 | grep -r "Timeout" /var/log/ |
find + xargs |
多文件联合搜索 | `find /var/log -name "*.log" |
zcat |
查看压缩文件内容 | `zcat app.log.1.gz |
7. 高频组合命令
-
快速定位错误堆栈
bashgrep -A 50 -B 20 "Caused by:" app.log # 显示异常上下50行
-
统计接口响应时间TOP10
bashawk '{print $7, $NF}' access.log \| sort -k2 -nr \| head -10
-
按小时统计错误数量
bashawk -F: '/ERROR/ {count[$2]++} END {for(h in count) print h":00", count[h]}' app.log
场景示例
问题
用户反馈14:30左右接口返回500错误,需快速定位。
排查步骤
-
按时间过滤访问日志
bashsed -n '/2023-10-25 14:20:/,/2023-10-25 14:40:/p' access.log > tmp.log
-
搜索500状态码
bashgrep " 500 " tmp.log # 定位异常请求路径
-
关联应用日志
bashgrep "2023-10-25 14:30" app.log \| grep -C 30 "NullPointer"
工具推荐
- 文本处理三剑客 :
grep
(搜索)、sed
(替换/截取)、awk
(分析) - 高级工具 :
lnav
:日志查看神器(支持SQL查询日志)jq
:JSON日志分析(如K8s环境)ELK
:大规模日志聚合分析