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!"