java进程占用CPU资源过高分析脚本

 1 #!/bin/bash
 2 
 3 #输入占用CPU较高的进程号
 4 pid=$1  
 5 if [ -z $pid ]
 6 then
 7 echo "PID is NULL"
 8 exit 1
 9 fi
10 
11 #找到该进程中占用较高的前30个线程号
12 ps -mp ${pid} -o THREAD,tid,time | sort -rn |head -30 >mytmp.out   
13 
14 #获取线程信息
15 while read line
16  do
17 tid=`echo $line | awk '{print $8}'`
18 echo $tid
19 if [ "${tid}" = "-" ]
20 then
21 echo "this is '-'"
22 else
23 echo "TID is :"$tid>>${pid}_busy_thread.log
24 sixteenth=`printf "%x" $tid`
25 echo "Transform to 0xxxx is :"$sixteenth >>${pid}_busy_thread.log
26 /home/service/jdk1.6.0_29/bin/jstack ${pid} | grep $sixteenth -A 30 >>${pid}_busy_thread.log
27 fi
28 done  <mytmp.out
29 
30 echo "Finished!"

 

posted @ 2016-06-22 15:23  游荡的沙  阅读(319)  评论(0)    收藏  举报