作为一个程序后台开发人员,往往会查看程序运行的日志来分析当前程序运行的情况及异常问题排查。那必不可少的是如何高效的操作日志文件;本人之前常用的命令一般为tail、cat、vi(或vim)。要获取错误日志从何开始时可能要遍历整个日志文件,使用cat默认会快速翻到最后一行,若使用vi则把文件都加载到内存中长时间不能打开且可能影响服务器的正常运行(尴尬)。
1. tail指令
从文件尾部截取数据。tail也是工作中最常用的命令,因为可以利用-f选项,一直刷新获取文件尾部最新数据。常用获取当前文件动态信息
参数
-n : 查看后n行数据,注意当n后面值带“+”号表示从第x行开始, 如 tail -n +1000 test.txt
-f : 展示文件后面
#如获取当前日志末尾5行:tail -5 日志文件名称
tail -5 info.log
#如获取当前日志第30行后日志:tail -n 30 日志文件名称
tail -n 30 info.log
#如刷新当前日志信息: tail -f 日志文件名称
tail -f info.log
2. cat\tac指令
一般用于小文件的全部读取,若出现大的文件会快速翻到最后一行。
参数:
-A :相当于-vET的整合, 可以列出一些特殊字符而不是空白而已
-b :列出行号,进针对非空白行做行号显示,空白行不会标记
-E :将结尾换行符$显示出来
-n :打印出行号,连同空白行也会有行号,与-b的选项不同
-T : 将[tab]键以^I显示出来
-v : 列出一些看不出来的特殊字符
#如显示文件行号
cat -n 文件名称
tac指令与cat的指令参数一样,只是文件显示顺序刚好和cat相反,一般很少使用。
3.拓展指令
3.1 more指令
按键/命令
空格键(Space):向下翻页
回车(Enter):向下翻行
/字符串:在当前显示的内容(翻页进度位置),向下查找这个字符串关键字
:f:立刻显示文件名以及目前位置的行号
q: :退出当前文件的浏览
b或ctrl+b:往回翻页
#如查看文件信息(more 文件名称)
more info.log
3.2 less指令
less命令比more更富有灵魂,可以前后翻页,不止可以向上查找,也可以向下查找。
按键/命令
[pagedown] :向下翻页
[pageup] :向上翻页
/字符串:在当前显示的内容(翻页进度位置),向下查找这个字符串关键字
?字符串:向上查找字符串
n :重复前一个查找,与/或?有关, 比如前一个命令是?表示向上查找,此时n会向上查找
N: 反向的重复前一个查找
g :跳转到当前文件数据的第一行
G :跳转到当前文件数据的最后一行
q :退出当前文件的浏览
#如查看文件信息(less文件名称)
less info.log
注意:使用cat + more(less)指令搭配更有感觉哦,自行发现
3.2 head指令
head命令用来提取文件的前n行,一般配合使用-n选项。
参数
n:当指定的行数为负数-x时,则会打印出除了后面x行的其他所有数据。
#获取前5行数据
head -5 info.log
head -n 5 info.log
#获取从第5行开始数据
head -n -5 info.log