在Linux/UNIX上分析程序日志的技巧(2)

作用:显示文件的最后 N 行,或者实时显示文件中新增的内容。

用法:

1、  显示文件最后 N 行

tail -num filename

如:

tail -100 catalina.out

则显示 catalina.out 文件的最后 100 行

2、  实时显示文件中新增内容

tail -f filename

如:

tail -f catalina.out

执行该指令,不会直接返回命令行,而是实时打印日志文件中新增加的内容,这一特性,对于查看日志是非常有效的。如果想终止输出,按 Ctrl+C 即可。

Linux/unix 的管道:

管道,顾名思义,你可以把它理解为一个管子,这个管子连接的是前一个指令的输出和后一个指令的输入。管道在命令行上用一个竖线 '|' 表示。

比如 :

echo 'hello world'

在屏幕上打印一行字,而

echo 'hello world' | wc –l

就是把 echo 的输出送给 wc 指令, wc 指令统计行数,输出结果为:

1

组合使用:

通过分析日志来查找问题,其本质是在日志中寻找特定的模式,并定位该模式的出现的上下文(一般要求前后 N 行)。在实际应用场景中,我们更多的是组合使用前面介绍的指令,来快速定位对我们有用的日志信息。

以下场景,我们假定日志文件名为 catalina.out

场景一 : 实时跟踪日志文件 , 并过滤出包含特定关键字的日志

tail -f catalina.out | grep " 关键字 "

以上指令组合 , 将 catalina.out 中新增的日志实时取出 , 通过管道送给 grep 指令 , grep 指令将其中包含 " 关键字 " 的行显示在 console 上 , 直到用户按 ctrl+c 退出。管道可以多次连接,所以你可以在后面增加更多的 grep 来得到更加精确的过滤结果。

比如:

tail -f catalina.out | grep " 关键字 " | grep -v "debug"

以上指令组合,将显示所有包含" 关键字" 且不包含" debug " 的行。

场景二 :寻找日志中某个异常的 stacktrace 和前后相关信息

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/27777.html