Abstract
最近线上的事故有点多,加上公司的监控系统实在是不好用,所以为了抓更多的信息,需要去线上服务器看实时日志。作为一个萌新,居然傻傻的直接用vim打开了jetty的日志文件,近乎10个G的日志文件被vim读入内存,导致服务器的内存被撑爆,系统自动开始kill进程,最后把jetty进程kill掉了,导致了线上故障。
所以有了这篇文章,主要介绍在Linux环境下,可以用来查看日志文件并且不会占用很大内存的一些命令。
Introduction
一般来说在Linux下查看文件内容的命令有以下几种:
vim、vi等编辑器命令cat:由第一行开始显示内容,并将所有的内容输出tac:从最后一行倒序显示内容,并将所有内容输出more:根据窗口大小,一页一页的显示文件内容less:和more类似,但是功能更强大head:只显示头几行tail:只显示最后几行
如果是去线上看日志,只推荐less、tail、head这三种。
less
less工具是Linux正统查看文件内容的工具,可以使用pageup、pagedown等按键来前后翻看文件,也可以直接搜索需要的内容,最重要的是less在查看之前不会加载整个文件,它是显示要哪一屏幕再加载那几行。less的命令格式如下:less [参数] 文件名。
less打开文件
less +100g xx.log:直接定位到100行less +GG xx.log:直接定位到最后一行less -i xx.log:忽略搜索时的大小写less -N xx.log:打开后显示每行的行号
一般常用的命令如下:
/+字符串:向下搜索字符串?+字符串:向上搜索字符串n:重复前一个搜索N:重复后一个搜索b:向前翻一页d:向后翻半页q:退出lessp n%:跳到n%处pageup、pagedown:上下翻页g:移动到第一行G:移动到最后一行less filename打开,然后F,可以实现类似tail -f的效果,实时查看日志。
使用less命令需要注意的是,不要按v,因为这样会自动调用系统的文本编辑器,如果系统默认的是vim的话,就直接把整个文件读入内存了,切记切记。
tail和head
tail和head用来显示结尾或开头某个数量的文字区块。
比如想看文件的头10行可以head -10 filename,看最后10行可以tail -10 filename。
tail可以使用-f参数看文件的实时更新,比如tail -f finename,可以看到file更新的时候不断的把内容打印到屏幕上。
看日志的时候我们一般都会这么做,tail -f -n 1000 filename,表示实时查看文件最后1000行的内容。