Linux 日志查看与分析常用命令总结

日志是排查系统问题、监控程序运行状态的核心依据。本文总结 Linux 环境下查看、过滤、分析日志的常用命令与技巧,涵盖基础查看、关键字搜索、实时监控等场景。

一、基础日志查看命令

适用于快速浏览日志内容,根据文件大小选择合适工具。

1. cat:直接输出完整日志

  • 功能:一次性显示文件全部内容(适合 小文件,如几 KB~ 几十 MB)。
  • 语法

    bash

    cat [选项] 日志文件路径
    
  • 常用选项
    • -n:显示行号;
    • -b:只给非空行显示行号。
  • 示例

    bash

    # 显示系统日志全部内容(带行号)
    cat -n /var/log/syslog
    
    # 显示 Nginx 访问日志前 5 行(结合 head 更高效)
    cat /var/log/nginx/access.log | head -n 5
    

2. head:查看日志开头部分

  • 功能:默认显示文件前 10 行,适合查看日志初始化信息(如程序启动参数、配置加载日志)。
  • 语法

    bash

    head [-n 行数] 日志文件路径
    
  • 示例

    bash

    # 显示应用日志前 20 行
    head -n 20 /var/log/application.log
    
    # 显示系统日志前 5 行(默认 10 行,可省略 -n)
    head -5 /var/log/messages
    

3. tail:查看日志结尾 / 实时监控

  • 功能:默认显示文件最后 10 行,核心用于查看最新日志或 实时监控新增内容(如程序运行时的动态输出)。
  • 语法

    bash

    # 查看结尾
    tail [-n 行数] 日志文件路径
    
    # 实时监控(新增内容会动态输出)
    tail -f 日志文件路径
    
  • 示例

    bash

    # 显示 Nginx 错误日志最后 30 行
    tail -n 30 /var/log/nginx/error.log
    
    # 实时监控应用日志(按 Ctrl+C 退出)
    tail -f /var/log/app/debug.log
    
    # 实时监控并过滤关键字(结合 grep,见下文)
    tail -f /var/log/syslog | grep -i "error"
    

4. more:简单分页查看

  • 功能:按屏幕分页显示内容(适合 中小文件),支持逐页 / 逐行滚动。
  • 语法

    bash

    more 日志文件路径
    
  • 操作快捷键
    • 空格:翻到下一页;
    • Enter:向下滚动一行;
    • q:退出查看。
  • 示例

    bash

    # 分页查看用户登录日志
    more /var/log/auth.log
    

5. less:高效分页与交互(大文件首选)

  • 功能:按需加载内容(不一次性读取全文件),支持搜索、跳转行号,是 大文件(几百 MB~GB 级) 查看的最佳选择。
  • 语法

    bash

    less 日志文件路径
    
  • 核心操作快捷键(进入 less 后使用):
    操作快捷键
    下翻一页PageDown 或空格键
    上翻一页PageUp
    向下滚一行↓ 或 j
    向上滚一行↑ 或 k
    搜索关键字(向下)/ 关键字 + Enter
    搜索关键字(向上)? 关键字 + Enter
    跳转到下一个匹配n
    跳转到上一个匹配N
    跳转到文件开头gg
    跳转到文件末尾G
    跳转到第 N 行N + G(如 100G 到 100 行)
    退出q
  • 示例

    bash

    # 查看大型应用日志(支持中途搜索)
    less /var/log/huge_service.log
    

二、日志过滤与关键字搜索(grep

grep 是日志分析的核心工具,用于从日志中精准定位包含特定关键字的内容。

基本语法

bash

grep [选项] "关键字" 日志文件路径

常用选项与场景

选项功能描述示例
-i忽略大小写(匹配 Error/ERROR/error)grep -i "error" /var/log/app.log
-n显示匹配行的行号grep -n "timeout" /var/log/syslog
-v反向过滤(排除包含关键字的行)grep -v "debug" /var/log/app.log
-A N显示匹配行及之后 N 行(上下文)grep -A 3 "failed" /var/log/auth.log(显示 failed 行及后 3 行)
-B N显示匹配行及之前 N 行grep -B 2 "500" /var/log/nginx/error.log
-C N显示匹配行及前后各 N 行grep -C 2 "warning" /var/log/messages
-E支持扩展正则(多关键字 “或” 逻辑)`grep -E "errorwarning"/var/log/syslog`(匹配 error 或 warning)

进阶组合:多条件过滤

  • 多关键字 “与” 逻辑:用管道 | 组合多个 grep,只保留同时满足所有条件的行。

    bash

    # 查找包含 "error" 且包含 "2023-10-01" 的日志行
    grep "error" /var/log/app.log | grep "2023-10-01"
    
  • 递归搜索目录下所有日志:用 -r 选项搜索某个目录下所有文件中的关键字。

    bash

    # 递归搜索 /var/log 目录下所有文件中包含 "database" 的行
    grep -r "database" /var/log/
    

三、特殊场景处理

1. 处理包含特殊字符的关键字

如果关键字包含空格、引号或正则符号(如 . *),用双引号包裹即可:

bash

# 搜索包含 "failed to connect"(带空格)的行
grep "failed to connect" /var/log/network.log

# 搜索包含 "user=*"(带通配符)的行(需用 -F 关闭正则解析)
grep -F "user=*" /var/log/auth.log

2. 大日志文件高效分析

  • 优先用 less 打开(避免 cat 一次性加载导致卡顿);
  • 结合 grep 先过滤再查看,减少数据量:

    bash

    # 先过滤出包含 error 的行,再用 less 分页查看
    grep "error" /var/log/huge.log | less
    

3. 按时间范围过滤日志

如果日志包含时间戳(如 2023-10-01 14:30:00),可结合 grep 或 sed 按时间筛选:

bash

# 查找 2023-10-01 14:00 到 15:00 之间的日志
grep "2023-10-01 14:" /var/log/app.log | grep -v "2023-10-01 14:00"  # 排除 14:00 前的部分

四、常用命令速查表

需求场景推荐命令
查看日志全部内容(小文件)cat 日志文件
查看日志前 N 行head -n N 日志文件
查看日志最后 N 行tail -n N 日志文件
实时监控日志新增内容tail -f 日志文件
大文件分页 + 搜索less 日志文件(进入后用 / 搜索关键字)
查找包含关键字的行grep "关键字" 日志文件
查找关键字并显示上下文grep -C 3 "关键字" 日志文件
排除包含关键字的行grep -v "关键字" 日志文件

通过以上命令组合,可高效处理绝大多数日志分析场景。根据日志大小、关键字复杂度选择合适工具,能显著提升问题排查效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值