Linux 运行日志查看

来自: 分享 作者: 水煮鱼 时间: 9 小时前 查看: 5 回复: 0

别一上来就“全选”,先看“首尾”定方向

看最新的100行(比如找刚发生的错误):
tail -n 100 server.log
这命令就像把日志倒过来看,最新的记录永远在最上面,还能加个 -f 实时追更:tail -f server.log(按Ctrl+C退出,别问我怎么知道要强调这个)。

看开头的500行(比如找启动报错):
head -n 500 server.log
应用启动时的配置错误、初始化失败,大概率藏在日志前几屏,没必要翻完整本。

分页浏览:把“砖头书”拆成“小册子”
直接打开2GB的文件相当于抱着整个书柜看书,聪明人会分页看:

less 命令(Linuxer的最爱):
less server.log
进入后就像翻电子书:
Space 翻页,按 Enter 逐行滚,按 b 回退一页;
想搜关键词?输入 /error(比如找错误),按 n 跳下个匹配,N 回上一个;
看完按 q 退出,内存占用几乎可以忽略。
别用记事本、Word甚至 vi 硬刚——这些工具会把整个文件塞进内存,遇到GB级文件,你的电脑会用风扇声告诉你:“我不行了”。

精准搜索:让日志自己“说重点”
最常用的场景是“找包含某个词的记录”,比如排查错误时搜 “error”:

基础操作:grep "ERROR" server.log
瞬间把所有带ERROR的行揪出来,比你在文件里Ctrl+F快100倍。

带上下文的搜索(比如看错误前后发生了啥):
grep -C 5 "Timeout" server.log
-C 5表示“显示匹配行的上下5行”,就像给错误配了个“前情提要”和“后续发展”。

忽略大小写(别让“Error”“ERROR”逃过法眼):
grep -i "error" server.log
毕竟日志里的大小写全看开发心情,咱们得包容一点。

实时监控:给日志装个“监控摄像头”
应用运行时的日志是实时更新的,比如用户说“刚操作失败了”,你得马上看新产生的记录:

实时监控并过滤关键词:
tail -f server.log | grep "支付失败"
这命令相当于给日志装了个过滤器,只显示你关心的内容,其他乱七八糟的信息自动屏蔽。

多条件监控(比如同时看error和warning):
tail -f server.log | grep -iE "error|warning"
-E 是启用“或”逻辑,| 表示“或者”,就像同时监控两个关键词的报警器。

对付“超级大文件”:先切割再下手
如果日志大到离谱(比如5GB以上),建议先“分块”:

按大小切(每100MB一块):
split -b 100M big.log log_part_
切完会生成 log_part_aa、log_part_ab 等小文件,就像把整只烤全羊拆成羊肉串,吃着方便。

按行数切(每1万行一块):
split -l 10000 big.log log_part_
适合按“时间段”切割,比如前1万行是上午的记录,后1万行是下午的。

高级操作:让日志自己“总结报告”
有时候不仅要找记录,还要统计分析,比如“哪个IP访问最频繁”:

用 awk 提取关键列(比如Nginx日志):
awk '{print $1}' access.log | sort | uniq -c | sort -nr -k1 | head -n 20
这条命令能统计每个IP的访问次数并倒序排列,瞬间找出“访问狂魔”(可能是爬虫,也可能是真用户)。

统计错误出现的次数:
grep "ERROR" server.log | wc -l
想知道系统到底崩了多少次?一个命令就出结果,比你手动数靠谱多了。

避坑指南:这几件事千万别做
别用 cat 打开大文件:cat server.log 会把所有内容一次性输出到屏幕,不仅卡,还会让你在滚动的文字里迷失自我。
别在生产环境切割日志时加 -d:曾经有人用 split 切割时加了删除原文件的参数,结果把唯一的日志删了,连夜跑路了解一下?
别忽视 less 的搜索功能:很多人用 less 打开文件后不知道怎么搜,其实输入 /关键词 就行,比退出再用 grep 方便10倍。

------ 转载

快速回复
您需要登录后才可以回帖 登录 | 注册
Smilies Code
高级模式