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