在项目开发和维护的过程中,我们经常需要在 Linux 服务器上查询和分析日志文件。为了高效地处理大量的文本数据,我们可以借助一些强大的文本过滤工具,如 tail -f、more、zmore 、less、zless和 grep。本文将换种方式介绍这些常用的 Linux 命令,帮助您在日志分析中更加得心应手。
我们如果可以拉取日志文件到本地的话也可以使用EmEditor这款文本处理器去查询日志,他可以加载好几个G的日志文件,并轻松的筛选出我们需要查询的日志
场景案例
我们将以对话的形式来展示工作中实际的场景应用
角色说明:
角色A: 外星人Alien,部门领导
角色X: 欢乐青年大雄,卷王程序员,负责一款知名app运营平台的开发
场景使用:
美好的一天从上班开始,天刚蒙蒙亮,欢乐青年大雄迈着六亲不认的步伐来到了公司上班,刚到座位,微信群里问题接踵而至
Alien: 大雄,过来,你查下日志,有个用户xiuji反馈账号被锁了,你查下怎么回事?
大雄:小问题,看我使用命令
more sys-info.log | grep 'xiuji'
在info日志中过滤出了打印xiuji
的日志
大雄:他最近长时间没登录,账号锁定了
Alien: 那你在查下,他最近一个月啥时候登陆过,最近一次登录成功是啥时候
大雄:我去!!!我们的日志每天压缩成.gz存档一次,我把每天的解压一次,在查询一次,累死我算了!!!
Alien: 兄弟,过来,学着点
只见Alien飞快的在服务器上输入了命令
zmore sys-info.2023-07*.gz | grep 'xiuji' | grep '登陆成功'
Alien: 大雄啊,你看我使用zmore 命令就可以查看压缩文件了, 使用第一个 grep 过滤出含有 xiuji 的日志,使用 第二个 grep 在第一个过滤的基础上在过滤出登录成功的日志,这样就可以很清晰的查看了
大雄:学废了!
Alien: 你再把他今天登录前后20行的日志都打出来吧
大雄:
more sys-info.log | grep -C20 'xiuji'
Alien: 你把最新200行的info日志打出来,并查看实时的info日志,我让他们在操作下
大雄:
tail -200f sys-info.log
最终在大雄的排查下轻松的定位到了问题
Alien: 大雄啊,你还是很不错的,好好努力,来年哥给你换个嫂子
大雄:领导就是领导,这格局!我今晚一定要好好加班,争取干到12点,尽快让我哥实现梦想
就这样,大雄欢乐的开启了他的卷王生涯
。。。
命令
grep
grep
是 Linux 和类 Unix 操作系统中常用的强大命令行工具,用于在文件中搜索文本模式。grep 代表 "Global Regular Expression Print",它的基本语法如下:
grep [选项] 模式 [文件]
grep 常用的一些选项包括:
-i
或--ignore-case
:在搜索时忽略大小写。-r
或-R
或--recursive
:递归搜索目录及其内容。-l
或--files-with-matches
:仅列出包含匹配项的文件名。-n
或--line-number
:显示匹配行的行号。-v
或--invert-match
:选择不匹配的行。-E
或--extended-regexp
:将模式解释为扩展的正则表达式(ERE)。-F
或--fixed-strings
:将模式解释为固定字符串列表(非正则表达式)。-w
或--word-regexp
:仅匹配整个单词。-A <num>
或--after-context=<num>
:在匹配行后打印<num>
行的上下文。-B <num>
或--before-context=<num>
:在匹配行前打印<num>
行的上下文。-C <num>
或--context=<num>
:在匹配行前后各打印<num>
行的上下文。
tail
tail
是 Linux 和类 Unix 操作系统中的命令行实用工具,用于显示文件或数据流的末尾部分。它经常用于实时监控日志文件或提取文件的最新条目。tail 命令的基本语法如下:
tail [选项] [文件]
tail 常用的一些选项包括:
-n <行数>
或--lines=<行数>
:显示文件的最后<行数>
行。-<行数>f
或--follow
:随着文件增长,显示文件的最后<行数>
行,输出追加的数据。它会实时监控文件并实时更新显示。-q
或--quiet
或--silent
:当提供多个文件时,禁止显示文件名的头部信息。-c <字节数>
或--bytes=<字节数>
:显示文件的最后<字节数>
字节而不是行。-v
或--verbose
:即使只提供一个文件,始终输出头部信息。
more
more
是 Linux 和类 Unix 操作系统中的一个命令行分页工具,用于逐页显示文件的内容。它允许您按页查看大型文件,而不是一次性显示整个文件。more
命令的基本语法如下:
more [选项] [文件]
在这里,文件
是要显示内容的文件名。
more
命令的常用操作键包括:
- 空格键(Space):显示下一页。
- Enter 键:显示下一行。
- b 键:显示上一页。
- q 键:退出
more
,停止显示文件。 - / 搜索词:在文件中搜索指定的词,并跳转到下一个匹配。
less
less
是 Linux 和类 Unix 操作系统中常用的命令行分页工具,用于逐页显示文件的内容。与 more
相比,less
提供了更多的功能和更灵活的浏览选项。less
命令的基本语法如下:
less [选项] [文件]
在这里,文件
是要显示内容的文件名。
less
命令的常用操作键包括:
- 空格键(Space):显示下一页。
- Enter 键:显示下一行。
- b 键:显示上一页。
- G 键:跳转到文件末尾。
- g 键:跳转到文件开头。
- / 搜索词:在文件中搜索指定的词,并跳转到下一个匹配。
- ? 搜索词:在文件中逆向搜索指定的词,并跳转到上一个匹配。
- q 键:退出
less
,停止显示文件。
zmore
zmore
是 Linux 和类 Unix 操作系统中的一个命令行工具,用于查看gzip、zip、compress压缩文件的内容。它是基于 more 命令的变种,专门用于处理压缩文件。
zmore
的实现原理是将压缩文件的内容解压缩后交给 more
命令进行处理。因此,通过 zmore
可以直接查看压缩文件的内容,而无需先手动解压缩文件。
需要注意的是,zmore
仅适用于使用 gzip 压缩算法压缩的文件。对于其他类型的压缩文件,如 bzip2(.bz2
扩展名)或 xz(.xz
扩展名)压缩的文件,可以使用相应的工具 bzmore
和 xzmore
来查看其内容。
使用 zmore
可以方便地查看压缩文件的内容,这在需要快速检查压缩文件内容而无需解压的场景下非常有用。
zless
zless
是 Linux 和类 Unix 操作系统中的命令行工具,用于查看gzip、zip、compress压缩文件的内容。它是 less
命令的扩展版本,支持直接浏览压缩文件而无需先解压缩。
zless
通过自动解压缩压缩文件并将其传递给 less
进行处理来实现。因此,您可以直接使用 zless
查看压缩文件的内容,而无需手动解压缩文件。
需要注意的是,zless
仅适用于使用 gzip 压缩算法压缩的文件。对于其他类型的压缩文件,如 bzip2(.bz2
扩展名)或 xz(.xz
扩展名)压缩的文件,可以使用相应的工具 bzless
和 xzless
来查看其内容。
使用 zless
可以方便地查看压缩文件的内容,这在需要快速检查压缩文件内容而无需解压的场景下非常有用。它提供了与 less
相似的浏览和搜索功能,方便您在压缩文件中浏览和查找特定内容。