转载自 Java开发必须掌握的日志分析命令

对于大型网站来说,很多网站在可用性方面提出4个9或者5个9的要求,如果是4个9,那么网站全年的不可用时间不能超过52.6分钟,如果是5个9,全年不可用时间不能超过5.2分钟。这其实是很难的,无论多么厉害的程序员,他写过的代码不可能完全没有问题。而且有些时候,在线上发生问题的时候,我们大部分时间都用在排查并定位问题上了。一个问题可能解决起来也就是几分钟,但是排查起来却要花费几个小时。

在日常工作中,如果我们遇到线上问题,一般的处理步骤应该是先保留现场,然后再考虑回滚,之后再是解决问题。那么,保理现场保留的是什么的?至少要包括当时机器上面的线程的dump、堆内存的dump还有最重要的就是日志。因为很多时候,日志可能是我们了解程序执行的唯一途径。

有了日志,还要掌握一些命令,才能更好的、更高效的定位问题,因为一旦发生线上问题的时候,真的是分秒必争。本文,为你总结了几个常用的命令和简单用法,以及几个小案例来运用这些命令。

在介绍之前我还要强调一点,有很多朋友说,我不需要会这么多命令,一个vim(vi)命令就够我用了,请不要在服务器上直接对日志文件进行vim(vi)操作,这样可能会导致机器直接挂掉。

cat 查看文件的内容

cat命令是一个显示文本文件内容的便捷工具,如果一个日志文件比较小,可以直接使用cat命令将其内容打印出来,进行查看,但是,对于较大的日志文件,请不要这样做,打开一个过大的文件可能会占用过多的系统资源,从而影响系统对外的服务。

命令格式:

cat [选项] [文件]...

more 分页显示文件

cat的缺点在于,一旦执行后,便无法再进行交互和控制,而more命令可以分页的展现文件内容,按enter键显示文件下一行,按空格键便显示下一页,按 f键显示下一屏内容,按b键显示上一屏内容。

命令格式:

more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file ... ]

less 分页显示文件

less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。

命令格式:

less [参数]  文件

tail 显示文件尾

使用tail命令能够查看到文件最后几行,这对于日志文件非常有效,因为日志文件常常是追加写入的,新写入的内容处于文件的末尾位置。

使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容.

命令格式;

tail[必要参数][选择参数][文件]

head 显示文件头

与tail命令类似,但是不同的是head命令用于显示文件开头的一组行。

命令格式:

head [参数]... [文件]...

sort 内容排序

一个文件中包含有众多的行,经常需要对这些行中的某一列进行排序操作, sort命令的作用便是对数据进行排序。

命令格式:

sort [参数][文件]

wc 字符统计

wc命令可以用来统计指定文件中的字符数,字数,行数,并输出统计结果。

命令格式:

wc [选项]文件...

uniq 查看重复出现的行

uniq命令可以用来显示文件中行重复的次数,或者显示仅出现一次的行,以及仅仅显示重复出现的行,并且,uniq的去重针对的只是连续的两行,因此它常常与sort结合起来使用。

命令格式:

uniq[选项][参数]

curl URL访问工具

要想在命令行下通过HTTP协议访问网页文档,就不得不用到一个工具,这便是curl,它支持HTTP,HTTPS,FTP,FTPS,Telnet等多种协议,常被用来在命令行下抓取网页和监控WEB服务器状态。

命令格式:

curl [option] [url]

查看请求访问量

对于在线运行的系统来说,常常会碰到各种不怀好意的恶意攻击行为,其中比较常见的便是HTTP flood,也称为CC攻击。如何能够快速的定位到攻击, 并迅速响应,便成为开发运维人员必备的技能。定位问题最快捷的办法,便是登录到相应的应用,查看访问日志,找到相应的攻击来源,如访问量排名前10的ip地址:

cat access.log | cut -f1 -d " " | sort | uniq -c | sort -k 1 -n -r | head -10

页面访问量排名前10的url:

cat access.log | cut –f4 -d " " | sort | uniq -c | sort -k 1 -n -r | head -10

查看最耗时的页面

对于开发人员来说,页面的响应时间是非常值得关注的,因为这直接关系到用户能否快速的看到他想看到的内容。因此,开发人员常常需要将响应慢的页面找出来,进行优化:

cat access.log | sort -k 2 -n -r | head -10

统计404页面占比

对于请求的返回码,有些时候也是需要关注的,比如,如果404请求占比过多, 要么就是有恶意攻击者在进行扫描,要么就是系统出现问题了,同样,对于 500的请求也是如此,可以通过如下命令来查看404请求的占比:

export total_line=`wc -l access.log | cut -f1 -d " "` && export not_found_line=`awk '$6=='404'{print $6}' access.log | wc -l` && expr $not_found_line \* 100 / $total_line

Java开发必须掌握的日志分析命令相关推荐

  1. Java开发人员必须掌握的Linux命令(二)

    子曰:"工欲善其事,必先利其器." 学习应该是快乐的,在这个乐园中我努力让自己能用简洁易懂(搞笑有趣)的表达来讲解让知识或者技术,让学习之旅充满乐趣,这就是写博文的初心. 文章目录 ...

  2. Java开发人员必须掌握的Linux命令(三)

    做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 学习应该是快乐的,在这个乐园中我努力让自己能用简洁易懂(搞笑有趣)的表达来讲解知识或者技术,让学习之旅充满乐趣,这就是写博 ...

  3. Java开发人员必须掌握的Linux命令-学以致用(五)

    子曰:"工欲善其事,必先利其器." 做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 学习应该是快乐的,在这个乐园中我努力让自己能用简洁易懂(搞笑有趣) ...

  4. Java中GC (Allocation Failure)日志分析实战

    概述 博主在最近使用spring batch的过程当中遇到了内存容量耗尽程序崩溃的问题,于是决定将此次的内存问题分析通过本篇博客记录下来. 在分析gc日实例志之前,我们先通过一条<深入理解jav ...

  5. 再谈GC2:Java垃圾收集器与GC日志分析实践

    4. GC 算法(实现篇) - GC参考手册 2017年02月05日 23:58:36 阅读数:6862 您应该已经阅读了前面的章节: 垃圾收集简介 - GC参考手册 Java中的垃圾收集 - GC参 ...

  6. Java开发需掌握的常用Linux命令(持续更新)

    linux命令是对Linux系统进行管理的命令.对于Linux系统来说,无论是中央处理器.内存.磁盘驱动器.键盘.鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命 ...

  7. 日志分析命令 cat+awk+uniq+sort 详解

    在服务器开发中,我们经常会写入大量的日志文件.有时候我们需要对这些日志文件进行统计.Linux中我们可以利用以下命令简单高效的实现这一功能. 需要用到的命令简介 cat命令  cat命令主要有三大功能 ...

  8. java多线程基础篇(二)java线程常见问题Thread Dump日志分析

    线程常见问题 CPU占用率很高,响应很慢 CPU占用率不高,但响应很慢 线程出现死锁的情况 CPU占用率不高,但响应很慢 有的时候我们会发现CPU占用率不高,系统日志也看不出问题,那么这种情况下,我们 ...

  9. Shell 分析日志文件命令全面总结!

    更多专业文档请访问 www.itilzj.com 自己的小网站跑在阿里云的ECS上面,偶尔也去分析分析自己网站服务器日志,看看网站的访问量.看看有没有黑阔搞破坏!于是收集,整理一些服务器日志分析命令, ...

最新文章

  1. 【CUDA7.5】MATLAB中配置Win7+Matlab R2015b+CUDA7.5+vs2013配置方法
  2. 使用阿里云Python SDK管理ECS安全组
  3. 探秘!在阿里云做产品经理是怎样的体验?
  4. xxx must either be declared abstract or implement abstract method ‘call(T1, T2)‘ in ‘Function2
  5. matlab dividend,[原创]基于(Matlab/R/C++)的方差Gamma模型(Hull期权期货)随机抽样[by fantuanxiaot]...
  6. python extended,python list中的append 与 extended 的区别
  7. jOOQ与Hibernate:何时选择哪个
  8. caffe使用ctrl-c不能保存模型
  9. 统计内存使用率shell
  10. 中国体外冲击波碎石机市场趋势报告、技术动态创新及市场预测
  11. 北大开源ECCV2018深度去雨算法:RESCAN
  12. HFSS仿真结果输出
  13. 计算机excel取整函数,Excel取整公式集锦
  14. SSL协议与数字证书原理
  15. 人生的极致:大道至简 知行合一
  16. 如何进行网站诊断呢?
  17. 错误 0xc00470fe: 数据流任务: 产品级别对于 组件“源 - TestDB01$”(1) 而言不足
  18. 苹果怎么换自定义铃声?不用电脑也能搞定!
  19. GIT服务器使用基础
  20. 在Mplus安装JAVA_Mplus教程-Mplus安装和入门一文搞定

热门文章

  1. 集合的定义与并查操作(C语言)
  2. C++二维数组作为函数参数
  3. LeetCode 226翻转二叉树-简单
  4. LeetCode 110平衡二叉树-简单
  5. 前缀和优化+计蒜客 泡咖啡
  6. Tree Cutting POJ - 2378(树形DP)
  7. mingw w64 matlab,Matlab安装MinGW-w64问题解决
  8. idea使用jar包依赖,替换掉项目依赖
  9. CF1547F Array Stabilization (GCD version) st表 + 尺取/二分
  10. [3.3训练赛]One-Dimensional(矩阵快速幂),Freda的迷宫(无向图强连通分量+并查集),一道防AK好题