grep -C 10 "NullPointerException" app.log # 前后各10行,还原现场grep -B 5 "Error" app.log # 只看错误前的关键参数grep -A 8 "Timeout" app.log # 追踪超时后的堆栈流向
🎯 高阶过滤:排除噪音,聚焦信号
排除刷屏干扰:grep "Error" app.log | grep -v "HeartBeat"多关键词并联:grep -E "Error|Exception|Fatal" app.log快速统计频次:grep -c "OutOfMemory" app.log → 直接回答老板“今天发生了17次”💡 护眼必备:使用 --color=always 高亮关键词,让核心信息像霓虹灯一样跃出屏幕。
📊 第三步:从“查日志”到“做数据分析”——awk才是终极武器如果你只停留在grep,你只是日志搬运工。学会awk,你就成了线上系统的数据分析师。
景一:谁是攻击源?——Top 10 IP定位术
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10
输出实例
48210 116.25.192.103 ← 明显异常流量 9321 219.144.89.39 5102 180.168.201.77
→ 直接封禁,节省数小时排查时间
场景二:哪个接口最慢?——性能瓶颈闪电定位
awk '$NF > 1 {print $7, $NF}' access.log | sort -nr -k2 | head -5
输出:
/api/v1/user/login 3.214s/api/v1/order/create 2.891s
→ 优化一个接口,QPS提升40%
🧠 本质升级:你不是在“看日志”,而是在用代码解码用户行为与系统状态。
⏰ 第四步:精准时间切片——别让错误语法污染你的结果想查看“14:00-15:00之间的错误”?很多人用 sed '/14:00/,/15:00/p',这会误匹配日志内容中的“14:00元”这类文本!
✅ 正确姿势:awk字典序精准匹配
awk '$2 >= "14:00:00" && $2 <= "15:00:00" {print $0}' app.log
这才是真正的时间切片,纯净无污染。
🚀 组合拳实战:3分钟定位半夜告警实际案例:凌晨收到CPU飙高告警。
第一步:less api.log + F 实时观察,发现大量504 Gateway Timeout第二步:grep -C 10 "Timeout" api.log | grep --color -E "user_id|order_id" 锁定影响用户第三步:awk '$NF > 2 {print $7}' api.log | sort | uniq -c | sort -nr 找出最慢接口 /api/payment/callback第四步:awk '$2 >= "02:00:00" && $2 <= "02:05:00" {print $0}' api.log > /tmp/peak.log 导出高峰时段日志供后续分析结果:从告警到定位支付回调第三方接口超时,用时3分钟,团队开始处理时,我已在写复盘文档。
✨ 你的运维能力升级路线图青铜:tail -f + 肉眼扫描白银:grep -C + 基础过滤黄金:juncai 数据分析 + 时间切片王者:全链工具组合 + 自动化脚本,把3小时的事做成3分钟的事🌈 最终建议:将这些命令写成alias或小脚本,放入你的
~/.bashrc。例如:
alias tracklog='less +F'alias grepctx='grep -C 10 --color=always'alias slowapi='awk '\''$NF>1{print $7,$NF}'\'' access.log | sort -nr -k2 | head -10'
从此,线上故障排查不再是熬夜煎熬,而是你展示技术深度的舞台。
开始用正确的方式处理日志吧——你的时间很宝贵,应该花在创造价值上,而不是机械扫描上。 💪