Java开发必须掌握的日志分析命令分钟,如果有5个9,则每年不可用时间不能超过5.2分钟。这其实很难。再优秀的程序员,写出的代码也不可能完全没有问题。而有时,当线上出现问题时,我们大部分时间都花在排查和定位问题上。一个问题可能需要几分钟才能解决,但排除故障却需要数小时。在日常工作中,如果我们遇到线上问题,一般的处理步骤应该是先保留站点,再考虑回滚,再解决问题。那么,保理网站上保存了什么?至少包括当时机器上线程的dump,堆内存的dump,最重要的是日志。因为很多时候,日志可能是我们了解程序执行情况的唯一途径。有了日志,就需要掌握一些命令,才能更好、更高效地定位问题,因为线上一旦出现问题,分秒必争。本文为大家总结了几个常用的命令和简单的用法,以及几个使用这些命令的小案例。在介绍之前,我想强调一点。很多朋友说我不需要知道那么多命令。一个vim(vi)命令对我来说就足够了。请不要直接对服务器上的日志文件进行vim(vi)操作。这可能会导致机器直接挂掉。cat查看文件内容cat命令是显示文本文件内容的便捷工具。如果日志文件比较小,可以直接使用cat命令打印出其内容进行查看。但是,对于较大的日志文件,请不要这样做,打开过大的文件可能会占用过多的系统资源,从而影响系统的对外服务。命令格式:cat[option][file]...more分页显示文件。cat的缺点是一旦执行就不能再交互和控制,more命令可以分页显示文件内容。按回车键显示文件的内容。一行,按空格键显示下一页,按f键显示下一屏内容,按b键显示上一屏内容。命令格式:more[-dlfpcsu][-num][+/pattern][+linenum][file...]less页面显示fileless工具也是一个文件页面显示或者其他输出的工具,应该说可以说它是Linux中正统的一个非常强大的查看文件内容的工具。less的用法比more更灵活。在more中,我们没有办法往前翻,只能往后看,但是如果用less,我们可以用[pageup][pagedown]等按键功能来往后看,使用起来更方便查看内容一个文件!另外,你可以用更少的东西拥有更多的搜索功能,不仅可以向下搜索,还可以向上搜索。命令格式:less[参数]filetail表示文件结束。使用tail命令查看文件的最后几行。这对日志文件非常有效,因为日志文件经常被追加,新写入的内容在文件末尾。.使用tail命令的-f选项可以轻松检查正在更改的日志文件。tail-ffilename会在屏幕上显示filename中最后的内容,而不是只刷新,这样就可以看到最新的文件内容。命令格式;tail[必需参数][选项参数][文件]head显示文件头与tail命令类似,不同的是head命令用于显示文件开头的一组行。命令格式:head[parameter]...[file]...sort内容排序一个文件包含很多行,往往需要对这些行中的某一列进行排序。sort命令的作用是对数据Sort进行排序。命令格式:sort[参数][文件]wc字符统计wc命令可以统计指定文件中的字符数、字数、行数,并输出统计结果。命令格式:wc[option]file...uniq查看重复行uniq命令可以用来显示一个文件中重复的行数,或者显示只出现一次的行,只显示重复出现的行,而uniq的goRe-targeting只是连续的两行,所以经常和sort结合使用。命令格式:uniq[选项][参数]curlURL访问工具如果你想在命令行下通过HTTP协议访问网页文档,就得用到一个工具,它就是curl,它支持HTTP、HTTPS、FTP、FTPS、Telnet常用于爬取网页,在命令行下监控WEB服务器的状态。命令格式:curl[option][url]查看请求流量对于线上系统,我们经常会遇到各种怀揣恶意的恶意攻击,其中比较常见的就是HTTPflood,也就是CC攻击。如何快速定位攻击并快速响应已经成为开发和维护人员的必备技能。定位问题最快的方法是登录对应的应用,查看访问日志,找到对应的攻击源,比如访问量最大的前10个ip地址:cataccess.log|cut-f1-d”"|sort|uniq-c|sort-k1-n-r|head-10页面访问量前10个url:cataccess.log|cut–f4-d""|sort|uniq-c|sort-k1-n-r|head-10查看最耗时的页面对于开发者来说,页面的响应时间是非常值得关注的,因为它直接关系到用户能否快速看到自己想看的内容。因此,开发者往往需要找出响应较慢的页面并进行优化:cataccess.log|sort-k2-n-r|head-10统计404页面占比对于请求的返回码,有时需要付出代价注意,比如404请求比例过高,要么是恶意攻击者在扫描,要么是系统有问题。同样,500个请求也是如此。可以使用如下命令查看404请求占比:exporttotal_line=`wc-laccess.log|cut-f1-d""`&&exportnot_found_line=`awk'$6=='404'
