写这个也是这次出差,处理线上问题时碰到的一个问题。 以前用的liunx命令面对海量内容的文件时根本找不到自己的想要的日志
好了,小明不瞎扯。下面一一指出
情况一: 当面对一个日志很久很大时,如何快速找到自己想要的日志
处理一:grep 'xxxx' /xxx/xxx/yyyy xxxx指你要查找的内容 /xxx/xxx/yyyy 这是你的日志文件(绝对路径哦)
这样可以很快的定位到该台服务器上有没有相关的日志信息
但是这个有个缺陷,你会发现两个问题
1查出的日志信息只有一小段,不是完整的
2不是显示所有匹配的信息。只显示当前窗口能方法的条数。比如你查找的内容文件中会出现100次,但是这种查询方法只会显示10或几条 也就是一个窗口的能放下的条数。
处理上面两种情况
1的情况处理,进入文件的目录下 使用more命令
more xxxx xxx指文件名
然后 按/ 再输入你要找的内容关键字。这样可看到完整日志
2的情况处理 使用以下命令
grep -C4 'xxxx' /xxx/xxx/yyyy 没错就是加个 -C4 。 这个会将能匹配的信息都显示处理 当然也是不完整的日志信息。
情况二:如果我要查找一段时间内某用户的日志怎么找呢。
别慌,这是gerp其实提供支持正则表达式的。
比如我要查找 2018-09-09 14:20到2018-09-09 14:25分钟这间 xxx用户的日志 该怎么处理呢
cat /data/appLogs/yzfca-scs-inf.log.2018-08-23| grep -E '2018-08-23 18:2[0-5]' |grep 'xxxx'
-E标识支持正则表达式
常用的正则表达标识
xxx] xxxx指匹配指定范围
?任意字符0个或多个
{xxxx}xxx指出现次数
()分组
|或
^非
\: 忽略正则表达式中特殊字符的原有含义
. (小数点):代表“一定有一个任意字符”的意思;
* (星星号):代表“重复前一个字符, 0 到无穷多次”的意思,为组合形态
情况三: 如果你希望显示行怎么办,以及你会发现你查找的内容还要肉眼去找,不是高亮的,不区分大小写
grep -n -i -color -C4 'xxxx' /xxx/xxx/yyyy
加个-n即可 标识显示行
使用-i参数忽略大小写
–color高亮显示匹配结果
反正使用好grep命令是完全可以满足你查找内容的需求。即使文件再大也,都不是问题。
上述只是描述了查找日志(也是工作中用的最多的情况),它也可和其他命令一起配合使用也是很好
比如杀死程序。
第一步找到程序
ps aux|grep xxx xxx指程序相关的关键字
第二步 取其线程信息 kill -9 xxx xxx指线程
就这些没别的 。希望小明没写错,写错请告诉我,我学习学习 大神不要惜字如金 欢迎评论纠错。