对于一个程序猿而言,如果生产产生Bug,查看日志和错误定位是第一步,假设我们现在有一个叫做catalina.out的日志文件,那么,这几个最基本的命令,我们必须掌握:
tail -f catalina.out
日志跟踪,查看有无交易
tail -fn100 catalina.out
查询日志尾部最后100行的日志
vi catalina.out
打开日志文件
vim catalina.out
打开日志文件
cat catalina.out
文本输出命令
打开日志文件后(基本上也就是vi或者vim命令),我们肯定要查询关键词,只需要记住以下这几个命令,基本也够用了:
按G
或者shift+g
跳转到文件的末尾
按?
+关键字向上
查找对应的记录
按/
+关键字向下
查找对应的记录
这时,输入 n
命令可以按相同的方向
继续查找,输入N
命令可以按相反的方向
继续查找。
Vi相关命令,可以参照这篇博客:
https://www.cnblogs.com/0201zcr/p/4781341.html
基本上,掌握这些命令,应对大部分日志查询足以,可是如果日志很大,vi还好,可是cat就应付不过来了,你会感觉到明显的卡顿,ctrl+c退出cat命令都可能要好久,所以,掌握下面这套组合拳,就很有必要了:
cat catalina.out | grep 182001100019
这么一个简单的命令,就能将catalina.out中所有含有182001100019的记录给查出来,关键速度还挺快。当然,只查出这么个东西,大多时候往往还不够,我们还需要知道其前后10行或者20行的东西是什么(记录的日志上下文),所以我们需要把行号打出来,所以在cat命令后面加上一个-n 参数就好了:
cat -n catalina.out | grep 182001100019
知道行号(我们打印出来的行号是762),我们就可以检索前后20行的东西,比如:
sed -n "742,782p" catalina.out
从742行开始检索,到782行结束
cat -n catalina.out | tail -n +762 | head -n 20
从762行开始检索,往后tail20条
如果cat输出日志太多,我们需要写到txt文本中,我们可以使用more命令来浏览或者输出到文件上再分析:
cat catalina.out | grep 13 |more
:将查询后的结果交由more输出
cat catalina.out | grep 13 > /home/tomcat/tomcat7/logs/aa.txt
将查询后的结果写到/home/tomcat/tomcat7/logs/aa.txt文件上
如果想统计catalina.out这个日志一共有多少行,我们可以:
cat catalina.out | wc -l