少于 1 分钟阅读

前言

分析log日志,对一个服务器端开发工程师的重要性就不细谈了。

列出当前目录下最大的10个文件

du -hsx * | sort -rh | head -10

分析web服务的日志

  • 查看特定区域的日志

    程序运行了一阵,莫名其妙停了。

      cat test.log | grep 'Exception'
        
      grep 'Exception' test.log
        
      cat test.log | grep -n 'Exception' 显示行号
    

    但只能看到单行,如果想看到多行,就得借助sed了

      sed -n '/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p'  test.log
        
      // 查看文件的第5行到第10行
      sed -n '5,10p' filename 
    
      // 关键字所在行及之后5行  after
      grep 关键字 filename -A 5
      // 关键字所在行及之前5行  before
      grep 关键字 filename -B 5
      // 关键字所在行及前后5行  before
      grep 关键字 filename -C 5
    
  • 查看部分日志

    如果我们查找的日志很多,打印在屏幕上不方便查看, 有两个方法:

    1. 使用more和less命令, 如: grep -n "地形" test.log | more

      这样就分页打印了,通过点击空格键翻页

    2. 使用 >xxx.txt 将其保存到文件中,到时可以拉下这个文件分析.如:

      cat -n test.log grep “地形” >xxx.txt
  • 从某行开始看

    tail -n +5 xxx.log

查找项目所在的服务器位置

一般公司的测试主机上会部署多个tomcat目录,如果tomcat目录的命名没有规范,则很难确认一个项目运行在哪个目录上。

  • 根据端口查找

      // 找到端口对应进程的pid号
      netstat -anp | grep port
      // 根据进程的pid找到可执行文件所在的目录
      ps -ef | grep pid
    
  • 假设已知该项目的日志在某个目录下,根据日志文件查找

      // 找到日志文件对应进程的pid号
      fuser logfile
      // 根据进程的pid找到可执行文件所在的目录
      ps -ef | grep pid
    

lsof (list open file)

// 输出所有使用pid打开的文件
lsof -p pid

其它

  • 将应用程序后台运行,并记录日志

    笔者经常使用python写一些脚本,会碰到一种情况:一个脚本会运行较长时间(在远端服务器上),因此会趁中午出去吃饭等时间执行它。但个人电脑会自动锁屏,导致个人电脑与远端服务器失联,进而导致脚本执行中断。因此,我们要将脚本后台运行,并将输出导到某个文件上。 python test.py > test.log 2>&1 &

一个好用的shell

直接安装即可

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

引用

linux查找日志技巧

标签:

分类:

更新时间:

留下评论