cat命令是一个显示文本文件内容的便捷工具,如果一个日志文件比较小,可以直接使用cat命令将其内容打印出来,进行查看,但是,对于较大的日志文件,请不要这样做,打开一个过大的文件可能会占用过多的系统资源,从而影响系统对外的服务。
more 分页显示文件
cat的缺点在于,一旦执行后,便无法再进行交互和控制,而more命令可以分页的展现文件内容,按enter键显示文件下一行,按空格键便显示下一页,按f键显示下一屏内容,按b键显示上一屏内容。
另一个命令less提供比more更加丰富的功能,支持内容查找,并且能够高亮显示。
tail 显示文件尾
使用tail命令能够查看到文件最后几行,这对于日志文件非常有效,因为日志文件常常是追加写入的,新写入的内容处于文件的末尾位置。
head 显示文件头
与tail命令类似,但是不同的是head命令用于显示文件开头的一组行。
sort 内容排序
一个文件中包含有众多的行,经常需要对这些行中的某一列进行排序操作,sort命令的作用便是对数据进行排序。
wc 字符统计
wc命令可以用来统计指定文件中的字符数,字数,行数,并输出统计结果。
uniq 查看重复出现的行
uniq命令可以用来显示文件中行重复的次数,或者显示仅出现一次的行,以及仅仅显示重复出现的行,并且,uniq的去重针对的只是连续的两行,因此它常常与sort结合起来使用。
curl URL访问工具
要想在命令行下通过HTTP协议访问网页文档,就不得不用到一个工具,这便是curl,它支持HTTP,HTTPS,FTP,FTPS,Telnet等多种协议,常被用来在命令行下抓取网页和监控WEB服务器状态。
对于在线运行的系统来说,常常会碰到各种不怀好意的恶意攻击行为,其中比较常见的便是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请求占比过多,要么就是有恶意攻击者在进行扫描,要么就是系统出现问题了,同样,对于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