作用:显示文件的最后 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 和前后相关信息