Linux下查看日志用到的经常使用命令

杀僵尸进程 部分程序员,确定喜欢下面命令:

  ps -ef | grep java (先查java进程ID)java

  kill -9 java进程ID(生产环境谨慎使用)程序员

 

1.查看日志经常使用命令
    tail:  
       -n  是显示行号;至关于nl命令;例子以下:
             tail -100f test.log      实时监控100行日志

            tail  -n  10  test.log   查询日志尾部最后10行的日志;正则表达式

            tail -n +10 test.log    查询10行以后的全部日志;less

    head:  tcp

        跟tail是相反的,tail是看后多少行日志;例子以下:工具

            head -n 10  test.log   查询日志文件中的头10行日志;ui

            head -n -10  test.log   查询日志文件除了最后10行的其余全部日志;spa

    cat: debug

        tac是倒序查看,是cat单词反写;例子以下:日志

            cat -n test.log |grep "debug"   查询关键字的日志

 

2. 应用场景一:按行号查看---过滤出关键字附近的日志

     1)cat -n test.log |grep "debug"  获得关键日志的行号

 

  2)一般查找出错误日志 cat error.log | grep 'nick' , 这时候咱们还有个需求就是输出当前这个日志的先后几行:

    cat error.log | grep -B 'nick' 显示nick及前5行

    cat error.log | grep -A 'nick' 显示nick及后5行

    cat error.log | grep -C 'nick' 显示file文件里匹配nick字串那行以及上下5行

    cat error.log | grep -n -B10 -A10 'nick' 显示file文件里匹配nick字串先后10行

  

3. 应用场景二:选取日志中特定范围进行分析

   1)cat -n test.log |tail -n +1000|head -n 20   从第1000行开始,显示20行

            tail -n +1000表示查询1000行以后的日志

            head -n 20 则表示在前面的查询结果里再查前20条记录

  2)cat catalina.out | head -n 1400| tail -n +1350  显示1350行到1400行 (实现原理都差很少,就是经过语法糖)

 

 (1)按日期截取 :通常在日志系统中都会记录打印日志的时间,一般咱们很是须要查找指定时间端的日志:

        sed -n '/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p'  test.log

        特别说明:该命令中的两个日期值必须是日志文件中包含的值,不然该命令无效.; 先 grep '2014-12-17 16:17:20' test.log 来肯定日志中是否有该 时间点

 (2)按行数截取

    sed -n ‘10000,20000p’ test.log                

      sed -i '/关键词/d' catalina.out  删除包含关键词的行

4.应用场景三:日志内容特别多,打印在屏幕上不方便查看

    (1)使用moreless命令,

           如: cat -n test.log |grep "debug" |more     这样就分页打印了,经过点击空格键翻页

    (2)使用 >xxx.txt 将其保存到文件中,到时能够拉下这个文件分析

            如:cat -n test.log |grep "debug"  >debug.txt

5:使用管道进行and or条件处理

  and 使用管道实现   例如:  grep -n '日志排查' test.log | grep '日志'

  or 用-E   例如:grep -n -E '日志排查|hello' test.log  知足两个关键字的均可以找出来

 

6:如何看查占用cpu最多的进程?

方法一

核心指令ps

实际命令

  ps H -eo pid,pcpu | sort -nk2 | tail

执行效果以下:

[work@test01 ~]$ ps H -eo pid,pcpu | sort -nk2 | tail

31396  0.6

31396  0.6

31396  0.6

31396  0.6

31396  0.6

31396  0.6

31396  0.6

31396  0.6

30904  1.0

30914  1.0

结果

瞧见了吧,最耗cpu的pid=30914。

画外音:其实是31396。

 

方法二

核心指令top

实际命令

top

Shift + t

 

7:找到了最耗CPU的进程ID,对应的服务名是什么呢?

方法一

核心指令ps

实际命令

  ps aux | fgrep pid

执行效果以下:

[work@test01 ~]$ ps aux | fgrep 30914

work 30914  1.0  0.8 309568 71668 ?  Sl   Feb02 124:44 ./router2 –conf=rs.conf

结果

瞧见了吧,进程是./router2

画外音:  grep 和fgrep的区别?

二者都是搜索工具,但功能上有区别。
  1,首先,grep支持的是标准正则表达式。
  2,fgrep,不支持正则表达式,只用于匹配固定字符串。

因此后者要比前者速度快,固然同时后者的搜索功能要弱于前者。

 

方法二

直接查proc便可。

实际命令

ll /proc/pid

执行效果以下:

[work@test01 ~]$ ll /proc/30914

lrwxrwxrwx  1 work work 0 Feb 10 13:27 cwd -> /home/work/im-env/router2

lrwxrwxrwx  1 work work 0 Feb 10 13:27 exe -> /home/work/im-env/router2/router2

画外音:这个好,全路径都出来了。

 

8:如何查看某个端口的链接状况?

方法一

核心指令netstat

实际命令

  netstat -lap | fgrep port

执行效果以下:

[work@test01 ~]$ netstat -lap | fgrep 22022

tcp        0      0 10.58.xxx.29:22022          *:*                         LISTEN      31396/imui

tcp        0      0 10.58.xxx.29:22022          10.58.xxx.29:46642          ESTABLISHED 31396/imui

tcp        0      0 10.58.xxx.29:22022          10.58.xxx.29:46640          ESTABLISHED 31396/imui

 

方法二

核心指令lsof

实际命令

  lsof -i :port

执行效果以下:

[work@test01 ~]$ /usr/sbin/lsof -i :22022

COMMAND   PID USER   FD   TYPE   DEVICE SIZE NODE NAME

router  30904 work   50u  IPv4 69065770       TCP 10.58.xxx.29:46638->10.58.xxx.29:22022 (ESTABLISHED)

router  30904 work   51u  IPv4 69065772       TCP 10.58.xxx.29:46639->10.58.xxx.29:22022 (ESTABLISHED)

router  30904 work   52u  IPv4 69065774       TCP 10.58.xxx.29:46640->10.58.xxx.29:22022 (ESTABLISHED)

相关文章
相关标签/搜索