作为一个后端开发工程师,在Linux中查看查看文件内容是基本操作了。尤其是通常要分析日志文件排查问题,那么我们应该如何正确打开日志文件呢?对于我这种小菜鸡来说,第一反应就是 cat,tail,vi(或vim)了,是的,我曾经用过好多次vim编辑器来查看日志文件(可耻)。

千万不要使用vi命令来查看大文件内容, 尤其对于那些几十G的大文件。因为vi仅仅是一个编辑器(可以理解为windows中的记事本),使用vi命令后则会把文件所有内容加载到内存中,如果内存不够大的话,则可能会导致服务器瘫痪。

为了生成测试数据,笔者抓心挠肝,东拼西凑,写了一个生成测试文件的shell脚本,方便下文的命令演示,复制到linux命令行执行即可。

# 生成10行测试数据(可根据需求自行修改)
for ((i=1;i <= 10; i++));do echo "第$i行" >> test.txtif [[  `expr $i % 2` -eq 0 ]]thenecho -e  >> test.txtfidone

直接查看文件内容

查看整个文件的内容的命令一共有三个,cat/tac/nl,nl命令笔者用的比较少,所以此处就不再演示了,感兴趣的小伙伴可以去百度一哈。

cat [-AbEnTv]

选项与参数-A :相当于-vET的整合, 可以列出一些特殊字符而不是空白而已-b :列出行号,进针对非空白行做行号显示,空白行不会标记-E :将结尾换行符$显示出来-n :打印出行号,连同空白行也会有行号,与-b的选项不同-T : 将[tab]键以^I显示出来-v : 列出一些看不出来的特殊字符

范例1:查看test.txt文件的内容

cat test.txt

范例2:查看test.txt文件的内容, 并展示行号

cat -n test.txt

范例3: 不推荐使用cat查看大文件

cat -n test.txt

cat仅仅适合查看行数比较少的文件, 如果文件比较大则没有什么意义了,文件会快速翻到最后一行。如果文件中有特殊符号,比如[Tab], 换行等要显示出来,就必须加上-A之类的选项。当然cat也可以通过管道符配合more或less使用也可以达到比较好的效果。

tac(和cat打印顺序相反)

tac学过之后笔者从来没有实际应用过,由于用的比较少,所以大家知道就行了。不过这个命令比较有意思,和cat拼写相反,所以他们的打印顺序也相反,将最后一行作为第一行输出。范例1:倒叙查看文件的内容

翻页查看

more

more命令了解一下就行了,功能太少,笔者一般都用less命令。

按键/命令空格键(Space):向下翻页回车(Enter):向下翻行/字符串:在当前显示的内容(翻页进度位置),向下查找这个字符串关键字:f:立刻显示文件名以及目前位置的行号q: :退出当前文件的浏览b或ctrl+b:往回翻页范例1:翻行后,查看行号

less

less命令比more更加有弹性,可以前后翻页,不止可以向上查找,也可以向下查找。按键/命令[pagedown] :向下翻页[pageup] :向上翻页/字符串:在当前显示的内容(翻页进度位置),向下查找这个字符串关键字?字符串:向上查找字符串n :重复前一个查找,与/或?有关, 比如前一个命令是?表示向上查找,此时n会向上查找N: 反向的重复前一个查找g :跳转到当前文件数据的第一行G :跳转到当前文件数据的最后一行q :退出当前文件的浏览

范例演示

数据截取

head

head命令用来提取文件的前n行,一般配合使用-n选项。当指定的行数为负数-x时,则会打印出除了后面x行的其他所有数据。范例1:查看前10行数据

head -n 10 test.txt
范例2(一共10000行,没有空行):head -n -9989 test.txt

tail

从文件尾部截取数据。tail也是工作中最常用的命令,因为可以利用-f选项,一直刷新获取文件尾部最新数据。

选项与参数-n : 查看后n行数据,注意当n后面值带“+”号表示从第x行开始, 如 tail -n +1000 test.txt-f : 展示文件后面范例1:查看尾部5行数据【tail -n 5 test.txt】

范例2:查看文件尾部数据,并实时刷新数据

范例3:查看文件尾部5行数据,并实时刷新数据

通用命令

管道:Shell 还有一种功能,就是可以将两个或者多个命令(程序或者进程)连接到一起,把一个命令的输出作为下一个命令的输入,以这种方式连接的两个或者多个命令就形成了管道(pipe),管道命令用"|"来表示

范例:查看ll命令输出的前10行

ll | head -n 3

grep :命令用于查找文件里符合条件的字符串,这两个命令也是linux中最常用的的,而在查看日志文件也通常会结合这两个命令一起使用。

范例:查看文件文件中那些行包含‘999’

cat -n test.txt | grep '999'

>> : 文件追加重定向命令,可以往文件末尾追加数据,正如上文 echo "第$i行" >> test.txt。

范例:将一个文件的最后10行复制到helloworld.txt中

tail -n 10 >> helloworld.txt

wc文件字节数,字数,行数查看wc [-clw] [文件...],-c或--bytes或--chars 只显示Bytes数。-l或--lines 只显示行数。-w或--words 只显示字数。范例:查看文件行数wc -l

案例实战

案例1:打印日志文件中第11到20行。思路:首先获取前20行,然后在获取20行的后10行即可,需要使用管道命令。head -n 20 text.txt | tail -n 10

cat -n test.txt | head -n 20 | tail -n 10(如果需要显示行号)

Linux中查看日志文件的正确姿势,求你别tail走天下了!相关推荐

  1. Linux 实时查看日志文件的 4 种方法

    来源 | GOPS 全球运维大会 2021 · 上海站 在 Linux 下如何才能实时查看日志内容呢?有很多工具可以帮助我们在文件持续修改的同时输出文件内容,最常用的莫过于 tail 命令了. 1. ...

  2. 【Linux】查看日志文件

    [Linux]用less查看日志文件 一般程序部署在Linux环境,查看日志时,一般用less满足大部分的需求. 列举.记录最常用的场景,代码以Tomcat日志文件catalna.out为例. 直接查 ...

  3. linux 暂停实时日志,Linux 实时查看日志文件动态内容

    tailf 27.log | grep 'Classcomment/praise'               'Classcomment/praise' 接口名:查看请求固定接口的时间,实时 tai ...

  4. Linux中查看各文件夹大小(扫盘)

    df -h ./ du -hs ./ du -h /ifs4/BC_RD/USER/lizhixin/my_project/human_chr22 | grep [[:digit:]+]G du [- ...

  5. Linux中查看各文件夹大小命令du -h --max-depth=1

    du [-abcDhHklmsSx] [-L <符号连接>][-X <文件>][--block-size][--exclude=<目录或文件>] [--max-de ...

  6. linux系统查看日志文件常用命令

    1.vi 或 vim 在查看模式下,符号/后面跟关键字向下查找,符号?后面跟关键字向上查找,按n查找下一个,按N查找上一个 2.cat grep sed (1) cat -n 日志文件| grep ' ...

  7. linux中查看日志技巧,日志查看技巧之筛选[linux命令集][排查篇]

    引语:相信大家都会偶尔遇到要排查问题发生的原因的情况,那这种时候,我们最有力后盾就是日志文件了,所以谨记日志记录真的很重要.但是日志文件往往是很大的文件,而且里面有太多的东西可能不是我们需要的,如无数 ...

  8. java 读取mysql日志_如何在MySQL中查看日志文件?

    我已经读过Mysql服务器创建了一个日志文件,它记录了所有活动 - 比如何时执行查询和执行什么查询 . 谁能告诉我我的系统中存在哪些内容?我怎么读呢? 基本上,我需要使用不同的输入备份数据库[两个日期 ...

  9. nginx在linux中查看日志信息,nginx查看日志

    nginx的log日志分为access log 和 error log 其中access log 记录了哪些用户,哪些页面以及用户浏览器.ip和其他的访问信息 error log 则是记录服务器错误日 ...

最新文章

  1. mysal向一个无法连接的网络尝试了一个套接字操作 0.0.3.235_第十二章 Java网络编程(3)——套接字(上)...
  2. 利用shell脚本添加环境变量
  3. python os.listdir列举当前文件夹下所有文件及文件夹
  4. ASP.NET Session详解
  5. linux与磁盘相关的内容
  6. 自动生成构造方法、getter、setter
  7. Windows 下USB被禁用
  8. [GIS热点] 3S技术集成-新技术革命下集成模式
  9. 笔记丨利用gitee创建个人博客网站
  10. android设计计算等级程序,Android自定义View仿QQ等级天数进度
  11. Elasticsearch:理解 Elasticsearch 中的 Percolator 数据类型及 Percolate 查询
  12. 计算机考试函数应用题及答案,2016年全国职称计算机考试EXCEL考前练习题4
  13. 追梦的过程很开心,但结果却令人遗憾
  14. 大学生入学必备:计算机科学与技术专业相关信息,一文让你全了解!
  15. 打开桌面计算机投屏到扩展屏,电脑投屏到电视显示不完全解决办法
  16. 关于unity 放入system.data.dll 文件报错问题,报错 Microsoft (R) Visual C# Compiler version 2.9.1.65535 (9d34608e)
  17. 在审计中用到的计算机知识,2019注册会计师考试《审计》第五章知识点:信息技术对审计过程的影响...
  18. 流媒体知识 wiki
  19. bert 文本分类实战
  20. php劳保管理系统,劳保用品管理信息系统软件

热门文章

  1. libSVM应用举例
  2. 42. Vue、React 等前端项目部署,刷新 404 问题解决方案
  3. spring的Autowired和@Resource的区别是什么
  4. 扎克伯格预言即将成真:计算机可解读图片内容
  5. hiho一下120周 后缀数组一·重复旋律
  6. android调用系统设置
  7. 《大话设计模式》读书笔记-第8章 工厂方法模式
  8. 李湘确逢“第二春” 1月已再婚11月便当妈(图)
  9. krylov子空间迭代法
  10. 八款常用的 Python GUI 开发框架推荐