在日常运维与开发排查中,我们经常需要查看服务日志来定位问题。本文系统整理了几种常用的日志查看命令,包括 tail
、cat
、grep
、split
、sed
等,并结合实际应用场景,提供了完整的使用方式和示例。
📌 一、tail
命令 —— 实时查看日志首选工具
1. 实时查看日志内容(默认显示最后 10 行)
tail -f main.log
用于监控日志新增内容,常用于排查线上服务运行时行为。
2. 查看日志最后 N 行(非实时)
tail -n 20 main.log
3. 逆序显示最后 N 行(稀有使用)
tail -r -n 10 main.log
4. 从第 N 行开始读取,再显示 M 行
cat main.log | tail -n +1000 | head -n 500
5. 查看日志中第 X 到 Y 行内容(如 1350 到 1400 行)
cat main.log | head -n 1400 | tail -n +1350
📌 二、cat
命令 —— 快速查看日志全文
1. 分页查看所有日志内容
cat main.log | more
2. 分页查看前 1000 行日志
tail -n 1000 main.log | more
📌 三、grep
命令 —— 精确查找日志内容利器
1. 打印匹配行及其上下文(前后 5 行)
grep -C 5 'pattern' main.log
等价于:
grep -5 'pattern' main.log
2. 打印匹配行及其前 5 行
grep -B 5 'pattern' main.log
3. 打印匹配行及其后 5 行
grep -A 5 'pattern' main.log
4. 高亮并显示匹配内容上下 10 行:
cat main.log | grep -n -B10 -A10 "关键词"
📌 四、split
命令 —— 日志太大?先分割再分析!
1. 按行数分割(每 50000 行为一个新文件)
split -l 50000 main.log newfile_ --verbose
2. 按字节大小切割(每个文件 40MB)
split -b 40m main.log -d newfile_ --verbose
📌 五、sed
命令 —— 批量处理日志内容的利器
1. 删除包含某关键词的日志行
sed -i '/关键词/d' main.log
📌 六、日志片段查找实战案例
1. 查询接口请求日志
grep 'Handling body of request[/api/vip-point]:{\"point\":{\"id\":411,\"hqId\":2500' main.log
2. 接口日志二次过滤,查看字段值(如 discount)
grep 'VipCardLevelController - Sending data to response:' main.log | grep discount
3. 将某段匹配日志导出到新文件
grep 'Handling body of request[/api/vip-point]:{\"point\":{\"id\":411,\"hqId\":2500' main.log > a.log
4. 关键接口查询 + 精确字段追踪(适用于大日志文件)
grep 'Handling body of request[/api/branch-feature]:{\"hqId\":2498,\"branchId\":8579,' main.log | grep fixedBusinessTime
✅ 实战技巧总结
场景 | 命令 |
---|---|
实时查看 | tail -f main.log |
查看最近 100 行 | tail -n 100 main.log |
查询关键词上下 10 行 | grep -C 10 'error' main.log |
查看日志第 1000 到 1500 行 | `cat main.log |
查询并导出日志 | grep '接口名' main.log > result.log |
删除日志中包含某关键词的行 | sed -i '/关键词/d' main.log |
切割大日志文件 | split -b 40m main.log newfile_ |
🎯 结语
掌握这些日志命令,可以大大提升我们在排查生产问题、分析系统行为时的效率。建议大家动手在测试环境中多实践,形成肌肉记忆。
如果你觉得有用,欢迎 收藏 + 点赞 + 关注我,我会持续更新更多实用 Linux 运维技巧和 Java 开发经验!