tail适合实时监控新日志,less擅长高效查阅历史日志;两者配合覆盖多数排查场景:tail -f实时追加、-F应对轮转、管道过滤;less秒开大文件、支持反向搜索、跟随模式及多文件切换。

查日志不靠蛮力,关键在选对工具、用对姿势。tail适合盯新日志,less擅长翻旧记录,两者配合能覆盖绝大多数排查场景。
tail:专注“正在发生”的日志
它不是用来翻历史的,而是帮你盯住服务刚打出的内容。
-
快速看结尾:直接
tail -n 200 app.log,跳过冗长历史,聚焦最近200行; -
实时追加:加
-f就能持续滚动,比如tail -f -n 50 app.log,只刷最新50行,避免刷屏干扰; -
应对日志轮转:服务重启后日志可能重命名(如
app.log → app.log.1),这时别用-f,改用-F——它会自动跟上新文件; -
配合过滤更精准:管道接
grep,例如tail -f app.log | grep "ERROR\|WARN",只留关键级别。
less:稳住“已经发生”的日志
当问题发生在几分钟前,或者需要上下文对照时,less比tail更可靠。
-
打开即高效:
less app.log不加载全文,GB级日志秒开; -
定位到末尾再搜索:进界面后按
Shift+G跳到底部,再按?输入关键词(如?Order123456)向上反向查找; -
边看边跟进新内容:按
Shift+F进入“跟随模式”,效果类似tail -f;想退回浏览,按Ctrl+C即可; -
支持多文件切换:用
less app.log error.log打开多个,按:n和:p在它们之间跳转。
什么时候该换工具?
别硬扛——命令选错,排查效率直接打五折。
- 想从头扫一遍小日志(cat app.log | grep -C5 "NullPointerException",上下文一并捞出;
- 要统计某类错误出现次数?
tail -n 10000 app.log | grep "TimeoutException" | wc -l; - 发现日志里有乱码或二进制残留?
tail -c 500 app.log | hexdump -C,按字节检查最后500字节; - 同时盯N个服务日志?
multitail app.log nginx/access.log redis.log,分屏高亮,一目了然。
几个容易忽略但很实用的细节
小技巧往往决定排查快慢。
-
tail -n +100 app.log:从第100行开始显示,跳过开头初始化日志; -
less +G app.log:命令行直接打开并跳到末尾,省去Shift+G; -
tail -f app.log --pid=$(pgrep -f "java.*spring"):进程退出自动停止tail,避免挂后台占资源; - 在堡垒机里用
less时,如果/搜索失效,试试?——部分环境默认禁用正向搜索。


















