日期:2014-05-16  浏览次数:20629 次

linux下常用分析日志命令(2)

1. grep查找匹配文本

?

【a】在文件中查找

?$grep 'failed to initialize BeanFactory' upp-account.log

?

【b】查找并显示匹配行及以下的200行

?$grep -A 200 'failed to initialize BeanFactory' upp-account.log

?

【c】查找并显示匹配行及以上的200行

?$grep -B 200 'failed to initialize BeanFactory' upp-account.log

?

【d】查找,忽略大小写,并显示匹配行及以上的200行

?$grep -i -A 200 'failed to initialize BeanFactory' upp-account.log

?

?

?

【Linux下日志分析的几个常用命令】

?

有时候我们需要对线上的应用日志做一些分析和简单的统计工作,熟悉一下Linux下文本处理的几个命令,可能会有意想不到的收获:

more?? 查看文件内容

grep??? 在文件中查找

awk??? 文本处理

sort??? 排序

sed??? 文本处理

下面举个两个例子,说明一下这几个命令的简单应用

1、统计一下今天支付宝到淘宝、淘宝到支付宝的接口调用情况

第一步,找到日志文件路径,确定日志格式

因为接口调用走是TC,先ssh到一台tc的服务器,到日志目录下,ll 一下,看到有几个命名为alipay的日志文件,感觉是打印接口调用日志的,

more alipay-notify-success.log

输出:
2009-06-29 00:00:00,421 [] INFO? alipay-notify-success -
*********alipay notify callback*********
out_trade_no=T200P2062628786,trade_status=WAIT_BUYER_PAY,notify_action_type=createPartnerTradeAction,
input:

从日志看出,这是支付宝回调淘宝接口的日志,格式包括:时间,订单号、状态、通知类型等等

more alipay.log

输出:
2009-06-29 00:00:00,072 [] INFO? core.SignedTbClientInvoker -
**********Payway Request and Response*********
Service Name:
trade_create
Request URL:
http://aligw.alipay.com

从日志上看,这是淘宝调用支付宝的日志,格式包括:时间,接口类型,请求内容等等

第二步,查找特征文本

需要分类型统计接口的调用次数,所以特征字符串就是接口的类型文本,使用grep 命令

grep ‘,notify_action_type’ alipay-notify-success.log

第二个日志比较特殊,特征文本单独一行,没有固定前缀或者后缀特征,而前一行是固定的”Service Name:“,可以查找前一行,然后grep输出的时候多输出一行:

grep ‘Service Name:’ -A1 alipay.log

grep 命令有很多可选参数,比如忽略大小写,输出前(-B before),后(-A after)行文本等等。

第三步,文本分列

通常,日志文件的一行文本,都由几列组成,中间是分隔字符串,而我们的目标就是找到需要的列,并进行相关的计算,统计,这里就需要用到 awk 命令

对于 alipay-notify-success.log 日志文件,我们使用下面命令:

grep ‘,notify_action_type’ alipay-notify-success.log | awk -F’,’ ‘{a[$3]++}END{for (i in a) print i”,”a[i]}’

grep命令找到符合的行,作为awk命