嘿,boy,你平时在排查日志的时候,是用什么方法查看的呢?是不是第一反应就是cat
、tail
、vim
?
众所周知,作为一个后端开发,目前几乎所有的项目都是部署在Linux
服务器上,那么查看问题和分析日志就是我们日常的常规操作之一了。如果说你会用cat
或者tail
那还好,如果用的是vim
那可能会直接导致服务器崩溃。原因是vi或vim
打开文件的时候,会把文件所有内容加载到内存中,如果你打开的日志文件很小没有关系,如果是几十上百个G的文件,那你的服务器就是崩溃瘫痪掉,所以一起来学一学查看日志的正确姿势(知识)。
一、cat
帮助文档
cat
方式可以查看整个文件的内容,在服务器中敲命令cat --help
获取帮助信息如下:
从上面的图中可以看出,共计有[A,b,e,E,n,s,t,T,u,v]
几个参数:
- -A:这个是整合了
-vET
三个参数,能展示出一些不是空白的特殊字符 - -b:列出行号,空白行没有行号
- -e:整合了
-vE
- -n:列出行号,空白行有行号
- -s:不显示重复的空行,多个空行只显示一个空行
- -t:整合了
-vT
- -T:把
TAB
字符转换成^I
展示 - -v:显示不能打印的字符,比如转义字符
使用方法
cat [参数]... [文件]
例如:cat -n test.log
注意
不建议使用cat
来查看日志,如果日志数量少还好,如果数量多,cat是一路展示到文件末尾,就像这样,阅读及其不方便。
还有一个比较有意思的命令
tac
,你没看错,一个跟cat
命令相反的命令,它不光看起来跟cat
是反着的,它展示出来的日志也是从最后一行开始的。
二、more
帮助文档
使用more --help
查看帮助文档:
关于more
的用法,主要有几个选项记住即可:
- Space(空格):向下翻页
- Enter(回车):向下一行
- /字符串:向下搜索这个关键字
- f:显示文件名以及当前所在的行号
- q:退出预览
- b或ctrl + b:向上翻页
使用方法
more [文件]
注意
more
的命令如上面提到的f或q
就如同vim
命令一般,在预览模式下才可以使用。
三、less
帮助文档
less --help
个人的意愿还是比较喜欢less 的,因为它上下翻页我觉得更人性化:
- [PageUp]:向上翻页(别说你键盘没有,我不信)
- [PageDown]:向下翻页(别说你键盘没有,我不信)
- /字符串:当前位置向下查找对应的字符串
- ?字符串:当前位置向上查找字符串
- n:重复前一个查找,与/或?有关, 比如前一个命令是?表示向上查找,此时n会向上查找
- N:反向重复前一个查找
- g:跳转到文件的第一行
- G:跳转到文件的最后一行
- q:退出文件的预览模式
使用方法
less [文件]
注意
less
的命令如上面提到的more
一般,在预览模式下才可以使用。
四、head
这个东西从名字就可以看的出来,就是取数据前多少行。 一般都是跟-n
一起用的。
当指定的行数为负数-x时,则会打印出除了后面x行的其他所有数据。
使用方法
head -n 行数 [文件]
注意
这玩意几乎没人用吧,应该说很少有用到的时候。
五、tail
这个东西我也挺喜欢,从文件尾部截取数据, 多数的时候我跟-f
一起用,可以一直刷新尾部最新数据,就相当于在查看实时日志。
帮助文档
tail --help
别看参数多,很多参数几乎用不到:
- -f:循环读取,一直刷新尾部数据
- -q:不显示处理信息
- -v:显示详细处理信息
- -c <数目>:显示的字节数
- **-n <行数>:显示文件尾部的n行内容
使用方法
正常的时候是:
# 默认不加行数的时候,是后10行
tail [文件]
大多数的时候我是开两个终端窗口,一个运行,一个查看实时日志:
tail -f [文件]
# centos对这个进行过优化,可以直接这么写:
tailf [文件]
评论