沉梦听雨的编程指南 沉梦听雨的编程指南
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • 网络通信
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 多媒体框架
  • 虚拟机
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • 前端环境搭建
  • HTML与CSS
  • JS学习
  • Axios入门
  • Vue Router入门
  • Pinia入门
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 脚手架搭建
  • 瑞吉外卖
  • 黑马点评
  • vue-blog
  • 沉梦接口开放平台
  • 用户中心
  • 聚合搜索平台
  • 仿12306项目
  • 壁纸小程序项目
  • RuoYi-Vue
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)

沉梦听雨

时间是最好的浸渍剂,而沉淀是最好的提纯器🚀
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • 网络通信
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 多媒体框架
  • 虚拟机
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • 前端环境搭建
  • HTML与CSS
  • JS学习
  • Axios入门
  • Vue Router入门
  • Pinia入门
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 脚手架搭建
  • 瑞吉外卖
  • 黑马点评
  • vue-blog
  • 沉梦接口开放平台
  • 用户中心
  • 聚合搜索平台
  • 仿12306项目
  • 壁纸小程序项目
  • RuoYi-Vue
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)
  • API网关

  • 网络通信

  • 消息队列

  • Spring Cloud

  • 分布式事务

  • 云存储

  • 搜索引擎

  • 多媒体框架

  • 虚拟机

    • Linux基础小结
    • Linux环境搭建
    • 安装Docker
    • Docker入门
    • 配置桥接模式
    • 防火墙相关
    • 高效查看日志的常用命令详解
      • 七种常见命令
      • 1、grep 指令解析
        • 基础语法
        • 高频必备选项
      • 2、tail
        • 命令格式
        • 常用参数
        • 用法
      • 3、cat
        • 命令格式
        • 常用参数
        • 用法
      • 4、head
        • 命令格式
        • 常用参数
        • 用法
      • 5、more
        • 命令格式
        • 常用参数
        • 用法
        • 分页浏览文件内容
        • 控制每屏显示的行数
        • 合并并分页查看多个文件
        • 与管道结合使用
      • 6、less
        • 安装
        • 命令格式
        • 常用选项
        • 用法
      • 7、zcat 指令
      • 学习参考
    • docker run指令
    • docker部署篇
  • 微服务
  • 虚拟机
沉梦听雨
2024-04-26
目录

高效查看日志的常用命令详解

# 高效查看日志的常用命令详解

# 七种常见命令

  1. grep
  2. tail
  3. cat
  4. head
  5. more
  6. less
  7. zcat
命令 核心用途 适用场景 优点 缺点 典型用法示例
grep 文本过滤/搜索 从日志中提取含关键词的行(如 ERROR、IP、ID) 支持正则、可反向匹配、可统计、可高亮 本身不“浏览”文件,需配合其他命令 grep -i "error" app.log,tail -f log | grep --line-buffered "Timeout"
tail 查看文件末尾内容 查看最新日志、实时监控(排障首选) 支持 -f 实时跟踪、-F 防日志轮转 仅看末尾,无法回溯历史 tail -n 100 app.log,tail -F /var/log/nginx/access.log
cat 全量输出文件内容 小文件(<1MB)快速查看 语法简单、输出完整 大文件会刷屏、卡终端、无分页 cat config.log
head 查看文件开头内容 快速预览日志格式、起始时间等 简单快速 日常排障使用频率低 head -n 5 app.log
more 基础分页查看 在老旧系统或简单分页需求下使用 比 cat 更可控 不能向上滚动,功能有限 more large.log
less 高级分页浏览 大日志文件深度分析(推荐工具) 支持搜索、跳转、上下滚动、不加载全文件 学习少量快捷键 less error.log → /Exception 搜索 G 跳尾,g 跳首,q 退出
zcat 查看 gzip 压缩日志 查看 .gz 结尾的历史日志(无需解压) 直接读取压缩文件,节省空间和时间 仅支持 gzip 格式(.gz) zcat app.log.1.gz | grep "ERROR",zcat *.gz | less

使用建议总结:

  • 实时监控:tail -F + grep
  • 深度分析:less(支持搜索和导航)
  • 压缩日志:zcat 或 zgrep(如 zgrep "ERROR" app.log.*.gz)
  • 快速过滤:grep(配合 -i, -v, -A/B/C, -E)
  • 避免滥用:cat 仅用于小文件;more 已被 less 取代

组合示例

# 实时看错误
tail -F app.log | grep --line-buffered -i "error"

# 查看压缩日志中的异常
zcat app.log.2025-12-01.gz | less

# 全局搜索某关键词(含压缩包)
zgrep -r "user_id=123" /var/log/app/
1
2
3
4
5
6
7
8

# 1、grep 指令解析

# 基础语法

  • 默认:区分大小写
  • 输出:包含匹配内容的整行
grep [选项] '匹配模式' 文件...

# 示例
grep "error" /var/log/syslog
1
2
3
4

# 高频必备选项

选项 作用 示例
-i 忽略大小写 grep -i "error" log.txt
-v 反向匹配(显示不匹配的行) grep -v "DEBUG" app.log
-n 显示行号 grep -n "timeout" error.log
-r / -R 递归搜索目录(-R 会跳过二进制文件警告) grep -r "TODO" ./src/
-l 只输出匹配的文件名(不显示内容) grep -l "main" *.c
-c 统计匹配行数 grep -c "ERROR" app.log
-E 启用扩展正则表达式(等价于 egrep) `grep -E "404
-w 全词匹配(避免匹配子串) grep -w "log" file.txt(不匹配 "login")
-A N 显示匹配行之后 N 行 grep -A 2 "Exception" log.txt
-B N 显示匹配行之前 N 行 grep -B 3 "Error" log.txt
-C N 显示匹配行前后各 N 行 grep -C 1 "fail" log.txt

组合技:grep -rnw "config" /etc/

  • 在 /etc/ 中递归查找完整单词 "config" 并显示行号。

# 2、tail

# 命令格式

tail [参数] [文件] 
1

# 常用参数

  1. -f:持续跟踪文件新增内容(常用于实时监控日志)
    • -F:比 -f 更健壮,即使文件被删除或重建,也能继续跟踪
  2. -n <行数>:显示文件的尾部 n 行内容(默认为 10 行)
  3. -v:强制显示文件名标题,即使只查看一个文件(与 -q 相反)
  4. -q:不显示文件名标题(当同时查看多个文件时,抑制“==> filename <==”提示)
  5. -c <数目>:显示文件末尾的 指定字节数(适用于二进制文件或精确截取)
  6. --pid=PID(需与 -f 或 -F 合用):当指定的进程 PID 退出后,自动终止 tail
  7. -s, --sleep-interval=S(需与 -f 或 -F 合用):设置 两次检查之间的休眠间隔(秒),默认为 1 秒。适用于高频率写入的日志,可降低 CPU 占用。

可利用 指令(> 或 >>)将输出重定向到新的文件,日志文件太大无法直接下载到时候,可能会用到

# 用法

可以用于实时监控日志变动

# 实时展示日志末尾内容,默认最后10行,相当于增加参数 -n 10(tail -f -n 10 server.log)
tail -f server.log

# 查看固定线程http-nio-8091-exec-7
tail -f server.log | grep 'http-nio-8091-exec-7'

# -C 选项来显示检索结果的【前后几行】,-A 选项展示检索结果【后几行】,-B选项展示检索结果【前几行】
tail -f server.log | grep -C 5 'http-nio-8091-exec-7'

# 同时查看多个日志但不显示文件头(便于脚本处理)
tail -q -n 10 *.log
1
2
3
4
5
6
7
8
9
10
11

# 3、cat

# 命令格式

cat [参数] [文件]
1

# 常用参数

-n 或 --number:显示行号,对输出的每一行都加上行号。

-b 或 --number-nonblank:仅对非空行显示行号,空行不计数。

-s 或 --squeeze-blank:压缩连续的空白行,即相邻的空白行会被合并成一行。

-E 或 --show-ends:在每一行的末尾显示 $ 符号,用于标识行尾。

-T 或 --show-tabs:将制表符(tab)显示为 ^I,便于区分普通空格和制表符。

-A 或 --show-all:等同于 -vET 的组合,即显示控制字符(如退格符)、行尾 $ 符号以及将制表符显示为 ^I。

-v 或 --show-nonprinting:使用转义序列显示非打印字符,如控制字符。

> 文件名:重定向输出,将cat命令的输出内容写入到指定的文件中,而非打印到屏幕上。如果目标文件已存在,则会被覆盖。

>> 文件名:追加重定向,将cat命令的输出内容添加到指定文件的末尾,保留原有文件内容。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 用法

查看文件内容

# 最基本的用法是直接指定一个或多个文件名,cat 将依次读取并显示这些文件的内容:
cat file.txt

# 同时查看多个文件的内容:
cat file1.txt file2.txt file3.txt

# 显示行号
cat -n file.txt

# 作为数据流的一部分,`cat` 常与其他命令配合使用,如通过管道传递给 `grep` 命令进行内容搜索
cat -n file.txt | grep "search_pattern"

# 查看test.log前200行
cat  test.log | head -n 200

# 查看test.log最后10行
cat test.log | tail -n 10

# 显示匹配的前后三行
cat access.log | grep "/v2/test" | grep "123456" -C 3

# 统计匹配行数
cat access.log | grep "/v2/batchGetDidStatus" | wc -l
cat http.log | grep -c '/getFileDownloadUrl'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

创建或合并文件

# 创建新文件并从键盘输入内容,按 `Ctrl+D` 结束输入
cat > new_file.txt

# 合并多个文件内容并保存到一个新的文件中
cat file1.txt file2.txt > combined_file.txt

# 追加一个或多个文件内容到已存在的文件末尾
cat file_to_append.txt >> existing_file.txt
1
2
3
4
5
6
7
8

# 4、head

# 命令格式

head [参数] [文件] 
1

# 常用参数

-q 隐藏文件名
-v 显示文件名
-c <数目> 显示的字节数
-n <行数> 显示的行数
1
2
3
4

# 用法

跟 tail 是相反的,head 是看前多少行日志

# 查询日志文件中的头10行日志
head -n 10 server.log

# 查询日志文件【除了】最后 10 行的其他所有日志
head -n -10 server.log
1
2
3
4
5

# 5、more

# 命令格式

more [参数] [文件]
1

# 常用参数

-d 或 --squeeze-blank:在显示多行空行时,将其压缩为一行。

-l 或 --lines=NUM:指定每屏显示的行数,默认值通常为系统设定的屏幕高度。

-f 或 --force:即使文件没有换行符(\n),也尝试逐行显示。

-p 或 --prompt:在每个屏幕底部显示提示信息,而不是默认的 --More--。

-c 或 --clear-screen:每次显示新屏幕前清屏。
1
2
3
4
5
6
7
8
9

# 用法

  • more 命令是一个简单的分页查看工具,适用于浏览长篇文本文件或命令输出。它允许用户逐屏查看内容,并提供了搜索、向上/向下滚动等功能。尽管功能相对有限,但对于大多数日常使用场景来说已经足够。
  • 在现代 Unix-like 系统中,less 命令提供了更多高级功能和更友好的交互方式,通常被视为 more 的增强替代品。不过,对于那些只需要基础分页浏览功能的用户而言,more 命令依然不失为一个便捷的选择。

# 分页浏览文件内容

more 命令用于分页查看文件内容,一次显示一屏内容。当文件内容超过当前屏幕高度时,用户需要按下特定键来滚动查看后续内容。

基本用法如下:

more file.txt
1

在查看过程中,您可以使用以下按键进行操作:

  • 空格键 或 回车键:向下滚动一屏内容。
  • b 或 Ctrl+B:向上滚动一屏内容。
  • /pattern:在文件中搜索指定的文本模式,按 n 键查找下一个匹配项,按 N 键查找上一个匹配项。
  • q 或 Ctrl+C:退出 more 命令并返回到命令行。

# 控制每屏显示的行数

使用 -l 或 --lines 参数自定义每屏显示的行数:

more -l 50 file.txt
1

这将使 more 命令每屏显示 50 行内容。

# 合并并分页查看多个文件

more 命令可以接受多个文件作为参数,依次显示它们的内容:

more file1.txt file2.txt file3.txt
1

# 与管道结合使用

more 命令常用于接收其他命令的输出,通过管道 (|) 实现分页显示:

ls -l | more
1

在这个例子中,ls -l 命令列出当前目录下的详细文件信息,其输出通过管道传递给 more 命令进行分页显示。

# 6、less

# 安装

如果键入 less 指令的时候,显示下面的内容:

bash: less: command not found
1

则,需要安装 less 指令

# Ubuntu
apt-get install less
 
# CentOS
yum install less

# Docker
docker run cmd.cat/less less
1
2
3
4
5
6
7
8

# 命令格式

less [参数] 文件 
1

# 常用选项

-b <缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x <数字> 将"tab"键显示为规定的数字空格
/字符串:向下搜索"字符串"的功能
?字符串:向上搜索"字符串"的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
b 向上翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一页
回车键 滚动一行
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

# 用法

# 查看文件内容
less test.log
1
2

在查看过程中,您可以使用以下按键进行操作:

上下方向键 或 j、k:向下或向上滚动一行。
空格键 或 PgDn:向下滚动一屏内容。
b 或 PgUp:向上滚动一屏内容。
G:跳转到文件末尾。
g 或 1G:跳转到文件开头。
/pattern:在文件中搜索指定的文本模式,按 n 键查找【下一个】匹配项,按 N 键查找【上一个】匹配项。
?pattern:在文件中反向搜索指定的文本模式,按 n 键查找【上一个】匹配项,按 N 键查找【下一个】匹配项。
h 或 ?:显示帮助信息。
q 或 Ctrl+C:退出 less 命令并返回到命令行。
1
2
3
4
5
6
7
8
9

# 7、zcat 指令

介绍:

  • zcat 是一个用于读取和显示 gzip 压缩文件内容的命令,无需解压即可查看原始文本内容。
  • 特别适合查看和搜索 .gz 格式的日志文件
  • 功能等价于:gunzip -c
  • 输出的是解压后的内容,但不修改原文件

基本语法:

  • zcat [选项] 文件名.gz

用法分析:

# 搜索多个压缩日志中的关键词
zcat *.gz | grep "112233"

# 显示匹配行的前后几行
zcat access.log.2025-03-20.gz | grep -C 3 "error"

# 统计某错误出现次数
zcat *.gz | grep "Timeout" | wc -l
1
2
3
4
5
6
7
8

# 学习参考

  • Linux 6种日志查看方法,不会看日志会被鄙视的 - 知乎 (zhihu.com) (opens new window)

  • Linux查看log日志命令总结_linux log日志-CSDN博客 (opens new window)

  • 【Linux系列】Linux查看日志常用命令大全,再也不怕不会看日志啦_linux最常用的20个命令查看日志-CSDN博客 (opens new window)

  • Linux less 命令 command not found less 未找到命令 less 命令详解 less 命令未找到 less 命令安装 - CommandNotFound ⚡️ 坑否 (opens new window)

  • linux日志中查找关键字、前几行、结尾几行,Linux的find用法示例_linux查看日志前几行-CSDN博客 (opens new window)

上次更新: 2025/10/11 15:31:56
防火墙相关
docker run指令

← 防火墙相关 docker run指令→

Theme by Vdoing | Copyright © 2023-2025 沉梦听雨 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式