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

根据关键字搜索日志内容,常用的Linux命令

在 Linux 中,根据关键字搜索日志内容是运维和开发的常见需求。以下是常用的命令及场景示例:


1. grep 基础搜索

(1) 简单关键字匹配
# 在文件中搜索包含 "error" 的行
grep "error" /var/log/nginx/error.log# 忽略大小写(-i)
grep -i "warning" /var/log/syslog# 显示匹配行的行号(-n)
grep -n "timeout" app.log
(2) 多关键字搜索
# 同时匹配 "error" 或 "critical"(-E 启用正则)
grep -E "error|critical" /var/log/app.log# 匹配同时包含 "user123" 和 "login" 的行(需顺序出现)
grep "user123.*login" auth.log

2. 上下文显示

# 显示匹配行及其后5行(-A)
grep -A 5 "panic" system.log# 显示匹配行及其前3行(-B)
grep -B 3 "connection refused" network.log# 显示匹配行前后各2行(-C)
grep -C 2 "oom killer" kern.log

3. 递归搜索目录

# 在 /var/log 目录下所有文件中搜索 "segmentation fault"
grep -r "segmentation fault" /var/log# 仅显示文件名和匹配内容(-H)
grep -rH "404" /var/log/nginx/

4. 反向匹配(排除关键字)

# 排除包含 "debug" 的行
grep -v "debug" app.log# 排除空行和注释行(多个条件)
grep -v -E "^$|^#" config.conf

5. 结合 find 搜索多个文件

# 查找所有 .log 文件并搜索 "out of memory"
find /var/log -name "*.log" -exec grep "out of memory" {} +# 最近7天修改过的日志中搜索
find /opt/app/logs -name "*.log" -mtime -7 -exec grep "timeout" {} \;

6. 实时监控日志(tail + grep

# 实时追踪日志并过滤关键字
tail -f /var/log/nginx/access.log | grep "POST /login"# 高亮显示匹配内容(需要 `grep --color`)
tail -f app.log | grep --color -E "error|warning"

7. 使用 awk 高级过滤

# 提取日志中特定列(如第4列状态码为500的行)
awk '$9 == 500 {print}' /var/log/nginx/access.log# 结合时间范围过滤(假设时间在第4列)
awk '/2023-10-25 14:/, /2023-10-25 15:/' /var/log/app.log

8. 使用 sed 处理日志

# 提取两个关键字之间的内容
sed -n '/START/,/END/p' transaction.log# 替换日志中的敏感信息
sed 's/密码:.*/密码:******/g' auth.log

9. 压缩日志搜索

# 直接搜索 .gz 压缩文件
zgrep "502 Bad Gateway" /var/log/nginx/access.log.1.gz# 搜索多个压缩文件
zcat /var/log/nginx/*.gz | grep "404"

10. 统计匹配结果

# 统计匹配行数(-c)
grep -c "GET /api" access.log# 统计每个匹配关键字的出现次数
grep -o "exception type:[A-Za-z]*" app.log | sort | uniq -c

11. 高亮显示(需终端支持)

# 使用 `grep` 自带高亮
grep --color=auto "ERROR" app.log# 使用 `ack` 工具(更友好的高亮)
ack "WARNING" /var/log/*.log

12. 组合管道操作

# 复杂示例:搜索错误,排除测试用户,统计前10
grep "ERROR" app.log | grep -v "testuser" | cut -d' ' -f4- | sort | uniq -c | sort -nr | head -10

总结表格

场景命令示例
简单关键字搜索grep "error" file.log
实时监控日志tail -f logfile | grep "keyword"
多文件递归搜索grep -r "panic" /var/log
排除干扰项grep -v "debug" app.log
压缩文件搜索zgrep "404" access.log.gz
统计错误类型grep -o "Error:\w*" app.log | sort | uniq -c
时间段过滤sed -n '/2023-10-25 14:00:/,/2023-10-25 15:00:/p' system.log

注意事项

  1. 权限问题:日志文件通常需要 sudo 权限

  2. 性能优化:大文件搜索时尽量缩小范围(如先用 find 按时间过滤)

  3. 正则表达式:复杂匹配建议使用 -E 启用扩展正则

  4. 日志轮转:注意搜索范围是否包含历史日志(如 *.log*.gz

相关文章:

  • 怎么知道ip是内网还是外网?简单高效判断法
  • 基于坐标的神经表示实现零样本学习以用于快速三维多参数定量磁共振成像|文献速递-深度学习医疗AI最新文献
  • JAVA面试汇总(一)Java基础知识
  • MySQL中的公用表表达式CTE实战案例应用
  • 调度算法的学习
  • 【高中数学/指数/对数】同构六君子之 x/e^x/lnx组合曲线
  • Git_获取GitLab的token方法(访问令牌)
  • map 中key 是否可以放置的自定义的对象?
  • 【嵌入式系统设计师(软考中级)】第一章:计算机系统基础知识(上)
  • linux命令八
  • SparkSQL Join的源码分析
  • python自动化浏览器标签页的切换
  • 大模型——Crawl4AI 中的数据提取策略
  • 【FPGA基础学习】DDS信号发生器设计
  • AI图片生成器
  • AIP-235 批量方法:Delete
  • idea如何使用git
  • Maybe:打造个人财务管理的开源操作系统
  • SpringBoot-基础特性
  • 前端vue3 实现倒计时功能 组件
  • 李家超:香港特区政府积极推进十五运会各项筹办工作
  • 独家专访|苏童:《好天气》是一部献给中国郊区的作品
  • 中物联声明:反对美对华物流、海事和造船领域301调查措施
  • 历史学家许福谦逝世,长期致力于魏晋南北朝史研究
  • 接续《莱茵的黄金》,国家大剧院带来7国艺术家的《女武神》
  • 国防部:穷兵黩武不会让美国再次伟大