总结一些平时查看日常或线上日志常用的Linux命令,主要包括查看、筛选、分析、统计的命令。


1.查看日志


查看日志的命令主要有cat,tac,head,tail。
(1)cat命令经常用于查看日志文件,打印连续的内容。对于日常或者线上的机器来说,往往日志文件很大,将连续的日志打印出来,并不能快速的找到结果,并不建议使用。
(2)tac命令与cat命令恰恰相反,tac命令是将文件反序打印出来,从文件的最后一行开始打印。使用场景并不多。
(3)head命令用于取出文件的前几行,默认取前10行,可以加上参数-n,n用于代表前多少行。
(4)tail命令用于取出文件的后几行,默认取前10行,同样可以加上参数-n。平时用的最多的是用tail -f来动态的观察日志。
(5)zcat命令用于查看压缩文件中的信息,好处是不用解压文件就可以查看。


2.筛选日志


(1)grep命令是用的最多的分析日志的命令,通过对一行信息进行分析,筛选出想要的信息。简单的语法如下:


   grep [-acinv] [--color=auto] '筛选的字符串' 文件名
   -a:表示将binary文件以text的文件格式进行查找
   -c:得出匹配得到的信息的行数
   -i:筛选文件时不区分大小写
   -n:输出筛选结果的同时,输出行号
   -v:查找不包含筛选条件的信息
   -color=auto:为筛选结果中的关键字标记颜色
   -A:后面加行数n,用于列出关键字对应行以及后面n行
   -B:后面加行数n,用于列出关键字对应行以及前面n行
(2)zgrep命令,用法与grep没什么区别,但是适用于压缩文件,在筛选压缩文件中的信息时,速度很快。


3.分析日志


(1)awk命令,基于一行数据通过分段的方式进行处理,字段是它处理的最小单位。


   默认情况下,awk用空格符和tab键来进行分段。如awk '{print $1}' test.log,将test.log中每一行数据分段后,打印第一列数据。
   当然,也可以设置数据的分隔符,如awk 'BEGIN{FS=":"}{print $1}' test.log,将分隔符设置为":"。              
   另外,也可以进行一些逻辑判断,如awk 'BEGIN{FS=":"} $>3 {print $1}' test.log,增加列第三列数据大于3的条件。
(2)sort命令可以对筛选得到的结果进行排序,它可以根据不同的数据类型进行排序。语法如下:


   sort [-fbMnrtuk] [file or stdin]
   -f:不区分大小写
   -b:忽略最前面的空格
   -M:以月份进行排序
   -n:按照数字进行排序
   -r:反序
   -t:分隔符,默认为Tab键
   -u:uniq,过滤相同的数据
   -k:以那个区间进行排序
(3)uniq命令用来过滤重复数据,同样的数据只显示一次。语法如下:


   uniq [-ic]
   -i:不区分大小写
   -c:显示出现的次数
(4)wc命令用于统计文件里的字,行,字符的数量。


   wc [-lwm]
   -l :统计行数
   -w:统计字数
   -m:统计字符数
其他相关的Linux命令还有很多,有待完善。