Linux下查看日志的命令

1,011 阅读3分钟
原文链接: amberno1111.github.io

Abstract

最近线上的事故有点多,加上公司的监控系统实在是不好用,所以为了抓更多的信息,需要去线上服务器看实时日志。作为一个萌新,居然傻傻的直接用vim打开了jetty的日志文件,近乎10个G的日志文件被vim读入内存,导致服务器的内存被撑爆,系统自动开始kill进程,最后把jetty进程kill掉了,导致了线上故障。

所以有了这篇文章,主要介绍在Linux环境下,可以用来查看日志文件并且不会占用很大内存的一些命令。

Introduction

一般来说在Linux下查看文件内容的命令有以下几种:

  • vimvi等编辑器命令
  • cat:由第一行开始显示内容,并将所有的内容输出
  • tac:从最后一行倒序显示内容,并将所有内容输出
  • more:根据窗口大小,一页一页的显示文件内容
  • less:和more类似,但是功能更强大
  • head:只显示头几行
  • tail:只显示最后几行

如果是去线上看日志,只推荐lesstailhead这三种。

less

less工具是Linux正统查看文件内容的工具,可以使用pageuppagedown等按键来前后翻看文件,也可以直接搜索需要的内容,最重要的是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:退出less
  • p n%:跳到n%
  • pageuppagedown:上下翻页
  • g:移动到第一行
  • G:移动到最后一行
  • less filename打开,然后F,可以实现类似tail -f的效果,实时查看日志。

使用less命令需要注意的是,不要按v,因为这样会自动调用系统的文本编辑器,如果系统默认的是vim的话,就直接把整个文件读入内存了,切记切记。

tailhead

tailhead用来显示结尾或开头某个数量的文字区块。

比如想看文件的头10行可以head -10 filename,看最后10行可以tail -10 filename

tail可以使用-f参数看文件的实时更新,比如tail -f finename,可以看到file更新的时候不断的把内容打印到屏幕上。

看日志的时候我们一般都会这么做,tail -f -n 1000 filename,表示实时查看文件最后1000行的内容。