zoukankan      html  css  js  c++  java
  • linux命令查看日志

    首先介绍几个日志查看种常用的简单命令:

    1、tail

    tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。

    tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。

    命令格式:

    tail [参数] [文件]

    参数:

    • -f 循环读取
    • -q 不显示处理信息
    • -v 显示详细的处理信息
    • -c<数目> 显示的字节数
    • -n<行数> 显示文件的尾部 n 行内容
    • --pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
    • -q, --quiet, --silent 从不输出给出文件名的首部
    • -s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

    例如:tail -400f demo.log #监控最后400行日志文件的变化 等价与 tail -n 400 -f (-f参数是实时) 

    2、less

    less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。

    例如:less demo.log #查看日志文件,支持上下滚屏,查找功能 

    3、grep

    选项与参数:
    -a :将 binary 文件以 text 文件的方式搜寻数据
    -c :计算找到 '搜寻字符串' 的次数
    -i :忽略大小写的不同,所以大小写视为相同
    -n :顺便输出行号
    -v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
     
    pattern
    1、^       行的开始 ,如'^google'匹配所以以google开头的行
    2、$       行的结束, 如'goolge$'匹配所以以google结束的行
    3、.        匹配一个非换行符(' ')字符, 如‘gr.p'匹配gr后接一个任意字符
    4、*       匹配零个或多个先前字符
    5、[]      匹配一个指定范围内的字符,如'[Gg]rep' 匹配Grep和grep
    6、[^]   匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-F和H-Z的一个字母开头,紧跟rep的行。
    7、<    锚定单词的开始,如:'<grep'匹配包含以grep开头的单词的行。
    8、>    锚定单词的结束,如'grep>'匹配包含以grep结尾的单词的行。
    9、x{m}   重复字符x,m次,如:'o{5}'匹配包含5个o的行。
    10、x{m,}  重复字符x,至少m次,如:'o{5,}'匹配至少有5个o的行。
    11、x{m,n}  重复字符x,至少m次,不多于n次,如:'o{5,10}'匹配5--10个o的行。
    12、w  匹配文字和数字字符,也就是[A-Za-z0-9],如:'Gw*p'匹配以G后跟零个或多个文字或数字字符,然后是p。
    13、W  w的反置形式,匹配一个或多个非单词字符,如点号句号等。
    14、  单词锁定符,如: 'grep'只匹配grep。
    15、+  匹配一个或多个先前的字符。如:'[a-z]+able',匹配一个或多个小写字母后跟able的串,如loveable,enable,disable等。
    16、?  匹配零个或一个先前的字符。如:'gr?p'匹配gr后跟一个或没有字符,然后是p的行。
    17、a|b|c  匹配a或b或c。如:grep|sed匹配grep或sed
    18、()   分组符号,如:love(able|rs)ov+匹配loveable或lovers,匹配一个或多个ov。
     
    实例
    1、 ls -l | grep '^a'         通过管道过滤ls -l输出的内容,只显示以a开头的行。
    2、 grep 'test' d*       显示所有以d开头的文件中包含test的行。
    3、 grep 'test' aa bb cc  显示在aa,bb,cc文件中匹配test的行。
    4、 grep '[a-z]{5}' aa 显示所有包含每个字符串有5个连续小写字符的字符串的行。
    5、 grep 'w(es)t.*1' aa  如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es(1),找到就显示该行。如果用egrep或grep -E,就不用""号进行转义,直接写成'w(es)t.*1'就可以了。
    6、 ps -ef|grep clustal2       查找指定进程“clustal2”
          ps -ef|grep clustal2|wc -l     查找指定进程“clustal2”的运行个数

    4、uniq

    Linux uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。

    uniq 可检查文本文件中重复出现的行列。(注意 uniq命令会删除文件内容)

    • -c或--count 在每列旁边显示该行重复出现的次数。
    • -d或--repeated 仅显示重复出现的行列。

    testfile中的原有内容为:

    $ cat testfile      #原有内容  
    test   
    test  
    test   
    Hello   
    Hello  
    Hello  
    Hello  
    Linux 
    Linux 

    使用uniq 命令删除重复的行后,有如下输出结果:

    $ uniq testfile     #删除重复行后的内容  
    test  
    Hello   
    Linux 

    检查文件并删除文件中重复出现的行,并在行首显示该行重复出现的次数。使用如下命令:

    uniq -c testfile 

    结果输出如下:

    $ uniq -c testfile      #删除重复行后的内容  
    3 test           #前面的数字的意义为该行共出现了3次  
    4 Hello          #前面的数字的意义为该行共出现了4次  
    2 Linux          #前面的数字的意义为该行共出现了2次 

    当重复的行并不相邻时,uniq 命令是不起作用的,即若文件内容为以下时,uniq 命令不起作用:

    $ cat testfile1      # 原有内容 
    test   
    Hello   
    Linux 
    test 
    Hello 
    Linux 
    test 

    这时我们就可以使用 sort:

    $ sort  testfile1 | uniq
    Hello   
    Linux 
    test 

    统计各行在文件中出现的次数:

    $ sort testfile1 | uniq -c
       3 Hello   
       3 Linux  
       3 test 

    在文件中找出重复的行:

    $ sort testfile1 | uniq -d
    Hello 95  
    Linux 85 
    test 30

     
  • 相关阅读:
    .net core 3.1 使用Redis缓存
    JavaSE 高级 第11节 缓冲输入输出字节流
    JavaSE 高级 第10节 字节数组输出流ByteArrayOutputStream
    JavaSE 高级 第09节 字节数组输入流ByteArrayInputStream
    JavaSE 高级 第08节 文件输出流FileOutputStream
    JavaSE 高级 第07节 文件输入流FileInputStream
    JavaSE 高级 第06节 初识I、O流
    JavaSE 高级 第05节 日期类与格式化
    JavaSE 高级 第04节 StringBuffer类
    JavaSE 高级 第03节 Math类与猜数字游戏
  • 原文地址:https://www.cnblogs.com/wsw-seu/p/10579030.html
Copyright © 2011-2022 走看看