linux日志上找,Linux下查找日志命令大全

Linux下查找日志命令大全

grep

grep这个命令确定是你们使用最多的了,可是这个命令到底怎么用呢,你都掌握了么?

grep:查找文件中包含指定文本的命令

语法:grep "测试" test.log

解释:查找test.log全部包含"测试"字符串的行java

基本用法

这个是最基础的语法,可是仅仅是这远远不够,咱们来看下它有哪些参数(只介绍最经常使用的一些参数):web

-a或者-text: 不忽略二进制数据

-A:显示匹配的行以及该行后n行

-B:显示匹配的行以及该行前n行

-C:显示匹配的行以及该行先后n行

-c:显示匹配的行数总和(注意是行数,若是一行匹配到两个也算一行)

-H:显示匹配的行说属文件名

-i:不区分大小写

-n:显示匹配的行并行显示当前行数是多少

-r:查询文件夹下全部内容

-v:显示除匹配之外的内容(就是不包含的意思)

-w:匹配整个单词而不是字符串的一部分

举例:查找test.log中有多少行包含"KingMouse"字符串

grep -c "KingMouse" test.log正则表达式

高级用法

一次查找多个文件

示例:grep “KingMouse” test1.log test2.log

可是更多 的还有一种状况,好比线上咱们的服务产生的日志都是按照大小来分割的,好比:spring

test-error.log

test-error.log.1

test-info.log

test-info.log.1

test-info.log.2

test-info.log.3

那这个时候咱们用-r就不行,由于咱们不想查error文件中日志,那这个时候就能够用:grep "KingMouse" test-info.log.* 来查找(生产上慎用,会大大增长cpu压力,最好肯定范围再查找)svg

正则表达式

注意:使用正则表达式的时候不要用双引号,而是要用单引号

场景:搜索日志中记录当前线程池空位信息

grep "线程池空位"

a98328b87f4c48d3b44670f231eaa59a.gif

结果出来不少结果,若是咱们此时急须要查记录线程池空位490-495以前怎么办呢?此时就须要用到正则表达式了:

‘grep ‘线程池空位49[0-5]’ test.log’

此时搜索出来的:

a98328b87f4c48d3b44670f231eaa59a.gif

咱们发现这样是否是简单不少,固然,关于正则表达式的还有不少,这里我就不说那么多,不会的小伙伴能够本身去搜下正则表达式!下面给一个分官网上的关于这个命令正则表达式规则说明:学习

^ # 锚定行的开始 如:'^grep'匹配全部以grep开头的行。

$ # 锚定行的结束 如:'grep$' 匹配全部以grep结尾的行。

. # 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,而后是p。

* # 匹配零个或多个先前字符 如:'*grep'匹配全部一个或多个空格后紧跟grep的行。

.* # 一块儿用表明任意字符。

[] # 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。

[^] # 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。

\(..\) # 标记匹配字符,如'\(love\)',love被标记为1。

\< # 锚定单词的开始,如:'\

\> # 锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。

x\{m\} # 重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。

x\{m,\} # 重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。

x\{m,n\} # 重复字符x,至少m次,很少于n次,如:'o\{5,10\}'匹配5--10个o的行。

\w # 匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,而后是p。

\W # \w的反置形式,匹配一个或多个非单词字符,如点号句号等。

\b # 单词锁定符,如: '\bgrep\b'只匹配grep。

多条件查找

一、或操做

grep '123|abc' test.log 查找test.log中包含123或者abc的行测试

二、与操做

grep '123' test.log | grep 'abc' 查找test.log中包含123同时也包含abc的行线程

head

其实整个命令我本人用的不是不少,不过偶尔也用,head其实很好理解,就是头的意思嘛,因此他能够用来查看当前日志文件开头内容好比查看文件前10行 head -10 test.log调试

tail

这个命令生产上用的也不是不少吧,大概就是调试的时候用的比较多,好比咱们想要实时查看当前服务日志:tail -f test.log,效果相似本地控制台吧

再或者咱们须要最新的100行内容(文件末尾100行):tail -100 test.logrest

sed

这个命令很重要,应为生产上日志文件通常都是很是大的,咱们要在一个很大的日志中搜索或者下载某部份内容至关不容易,此时能够用sed命令

查看某一段时间内的日志(日志输出须要有时间才可)

查看2020年3月27号上午9点到夜晚9点中间的日志

sed -n '/2020-03-27 09:00/,/2020-03-27 21:59/p' test.log

搜索某段时间内的日志

搜索2020年3月27号上午9点到夜晚9点中包含"kingmouse" 字符串的行数

sed -n '/2020-03-27 09:00/,/2020-03-27 21:59/p' test.log | grep -c "kingmouse"

将某段时间内的日志保存到一个新的文件中

将2020年3月27号上午9点到夜晚9点时间段内全部日志保存到当前目录下

sed -n '/2020-03-27 09:00/,/2020-03-27 21:59/p' test.log > newfile.log

关于sed命令用法还有不少,这里我给你们介绍最长用的,其余的能够去自行了解下

终极奥义 awk

awk是在过于强大,本人也是在学习探索中,今天我就来给你们说其中一种用法:拆分,相似java中的split()方法

最经常使用的,好比rest接口会默认打印接受的参数信息:

2020-03-27 10:16:05.615 cs_ccc_smartivr 10.172.54.145 kingmouse [http-nio-8080-exec-5] INFO c.h.h.system.log.ControllerAspect[48] [CallId : , ContactId : ] [TxId : -2006951347.113.15852753656100767 , SpanId : ]- Controller CLASS.METHOD : com.csc.kingmosue.controller.IvrFlowEngineController.query Args : [1585275342-66529420200327101605608, 1585275342-665294, 13180090312, 0, null, null, 100100311, 1800130, 2, 0, 0, 1, null, 255, null, null, 13180090312, null, org.springframework.security.web.firewall.FirewalledResponse@11bd369a]

若是咱们想看一下某个参数,好比第二个参数是啥,我只想看第二个参数

那么咱们能够这样:

一、查找出当前和这个接口记录的内容

grep "com.csc.kingmosue.controller.IvrFlowEngineController.query Args" test.log > test2.log

二、将每行按照逗号拆分并输出第二个参数

awk -F ',' '{print $4}' test2.log

有人说为何不是2而是4,为何说和java的split()方法相似呢,他是以都逗号分隔,钱数前面还存在逗号,因此就不是第二个了,这个本身你们数一下就好

你觉得到这里就结束了?no!

咱们刚刚输出了第二个参数,若是我须要判断当第二个参数不等于null的时候输出,等于null就不输出

awk -F ',' '$4 ~/null/{print $4}' test2.log

再增长点难度,好比我想判断第二个参数不等于null而且去重而后再统计行数

awk -F ',' '$4 ~/null/{print $4}' test2.log|sort|uniq|wc -l

解释:

uniq:去重,通常配合sort使用

wc -l:统计行数

好了,今天的知识分享到这里了,我这里介绍的知识众多命令中的冰山一角,而我也是把我平时使用最多的拿出来和你们分享下!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值