前言
分析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
-
查看部分日志
如果我们查找的日志很多,打印在屏幕上不方便查看, 有两个方法:
-
使用more和less命令, 如:
grep -n "地形" test.log | more
这样就分页打印了,通过点击空格键翻页
-
使用
>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)"