当前位置: 首页 > article >正文

[特殊字符] Linux 日志查看与分析常用命令全攻略

在日常运维与开发排查中,我们经常需要查看服务日志来定位问题。本文系统整理了几种常用的日志查看命令,包括 tailcatgrepsplitsed 等,并结合实际应用场景,提供了完整的使用方式和示例。


📌 一、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 开发经验!

http://www.lryc.cn/news/2386965.html

相关文章:

  • mysql-tpcc-mysql压测工具使用
  • Qt找不到windows API报错:error: LNK2019: 无法解析的外部符号 __imp_OpenClipboard
  • 机试 | vector/array Minimum Glutton C++
  • OpenCv高阶(十七)——dlib库安装、dlib人脸检测
  • 前端内容黑白处理、轮播图、奇妙的头像特效
  • 蓝桥杯 10. 安全序列
  • (10)-java+ selenium->元素之By class name
  • Git - .gitignore 文件
  • MPI与多线程(如OpenMP)混合编程注意事项与性能优化
  • 计算机网络学习(八)——MAC
  • 英语六级-阅读篇
  • 右键打开 pycharm 右键 pycharm
  • 机器人坐标系标定
  • Flink流处理基础概论
  • 【RabbitMQ】记录 InvalidDefinitionException: Java 8 date/time type
  • 如何通过API接口实现自动化上货跨平台铺货?商品采集|商品上传实现详细步骤
  • 《三维点如何映射到图像像素?——相机投影模型详解》
  • Go 语言范围循环变量重用问题与 VSCode 调试解决方法
  • 青少年编程与数学 02-020 C#程序设计基础 04课题、常量和变量
  • 零基础设计模式——结构型模式 - 适配器模式
  • 【QT】TXT文件的基础操作
  • WordPress多语言插件安装与使用教程
  • 互联网大厂Java求职面试:短视频平台大规模实时互动系统架构设计
  • 欣佰特科技|SenseGlove Nova2 力反馈数据手套:助力外科手术训练的精准触觉模拟
  • Axure元件动作七:移动、旋转、启用/禁用效果、置于顶层/底层详解
  • 网络安全-等级保护(等保) 3-2-2 GB/T 28449-2019 第7章 现场测评活动/第8章 报告编制活动
  • Flutter跨平台通信实战|3步打通Android原生能力,实现底层API调用!
  • IAM角色访问AWS RDS For MySQL
  • android property 系统
  • Karakeep | 支持Docker/NAS 私有化部署!稍后阅读工具告别云端依赖,让知识收藏更有序