Java问题排查工具单

tail

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

默认先展示最后10行

展示倒数300行并实时监听文件内容变化
tail -300f shopbase.log

grep

查找文件里符合条件的字符串

grep test f.txt
在文件f.txt中搜索test关键字
grep -i test f.txt
在文件f.txt中搜索test关键字,-i是忽略大小写匹配关键字
grep test f.txt g.txt
多文件搜索,在文件f.txt、g.txt中搜索test关键字
grep 1101 -r -n
在当前目录搜索1101关键字,如果含有子目录,则递归搜索
grep 1101 /home/admin -r -n
在 /home/admin目录搜索1101关键字,如果含有子目录,则递归搜索
grep 222 -r -n --include *java*
--include只在含有java的文件名中查找
grep 222 -r -n --exclude *class*
--exclude不在含有class的文件名中查找

seq 10 | grep 5 -A 3    #上匹配
seq 10 | grep 5 -B 3    #下匹配
seq 10 | grep 5 -C 3    #上下匹配,平时用这个就妥了

关键字上下n行搜索

awk

awk介绍:默认以空格分隔

在这里插入图片描述
awk '{print $1,$3}' sample.txt 输出第一列和第三列

1 this
2 Are
3 a
4 There

awk '{print NR,$0}' sample.txt 输出行号和行内容

1  1  2 this is a test
2  2  3 Are you like awk
3  3  This's a test
4  4  10 There are orange,apple,mongo
5 

搜索
awk '/ldb/ {print}' f.txt 匹配ldb
awk '!/ldb/ {print}' f.txt 不匹配ldb
awk '/ldb/ && /LISTEN/ {print}' f.txt 匹配ldb和LISTEN
awk '$5 ~ /ldb/ {print}' f.txt 第五列匹配ldb
awk ‘$1!=2 || $3==”Are”’ sample.txt 过滤第一列不等于2或者第三列等于Are的行
过滤某一列包含th字符的行
awk ‘$3 ~ /re/’ sample.txt
awk ‘$4 ~ /re/’ sample.txt
awk ‘$5 ~ /re/’ sample.txt

find

命令用来在指定目录下查找文件
find 20200228 20200229 -name *test* 多目录搜索
find . -iname *.txt 在当前目录搜索忽略大小写关键字
find 20200228 20200229 -name *test* 多目录搜索
find 20200228 20200229 -name *test* 多目录搜索
find /home/admin -size +250000k(超过250000k的文件,当然+改成-就是小于了)
find /home/admin -atime -1 1天内访问过的文件
find /home/admin -ctime -1 1天内状态改变过的文件
find /home/admin -mtime -1 1天内修改过的文件
find /home/admin -amin -1 1分钟内访问过的文件
find /home/admin -cmin -1 1分钟内状态改变过的文件
find /home/admin -mmin -1 1分钟内修改过的文件

top + jstack

  1. ps -ef | grep process-a 搜索进程process-a 得到PID 21773
  2. top -H -p 21773 统计进程process-a 的线程情况,如下图所示
  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                  
21809 root      20   0 4468572 506436  13192 S  0.3  3.1   6:32.41 java                                     
21773 root      20   0 4468572 506436  13192 S  0.0  3.1   0:00.00 java                                     
21775 root      20   0 4468572 506436  13192 S  0.0  3.1   0:02.63 java                                     
21776 root      20   0 4468572 506436  13192 S  0.0  3.1   0:00.77 java                                     
21777 root      20   0 4468572 506436  13192 S  0.0  3.1   0:00.80 java                                     
21778 root      20   0 4468572 506436  13192 S  0.0  3.1   0:00.80 java                                     
21779 root      20   0 4468572 506436  13192 S  0.0  3.1   0:00.79 java                                     
21780 root      20   0 4468572 506436  13192 S  0.0  3.1   2:57.09 java                                     
21781 root      20   0 4468572 506436  13192 S  0.0  3.1   0:00.00 java                                     
21782 root      20   0 4468572 506436  13192 S  0.0  3.1   0:00.00 java 
  1. printf '%x\n' 21809将线程PID 21809转换为16进制,得到5501
  2. jstack 21773 | grep -C 30 5531搜索进程PID 21773中线程PID 5501执行情况,关键字上下30行

网络状态分析

netstat -nat|awk '{print $6}'|sort|uniq -c|sort -rn
#查看当前连接,注意close_wait偏高的情况
在这里插入图片描述

btrace

不重启应用,为相关的代码添加日志等信息输出

使用参考:https://blog.csdn.net/dengjili/article/details/105764916

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值