1 #!/bin/bash 2 3 #输入占用CPU较高的进程号 4 pid=$1 5 if [ -z $pid ] 6 then 7 echo "PID is NULL" 8 exit 1 9 fi10 11 #找到该进程中占用较高的前30个线程号12 ps -mp ${pid} -o THREAD,tid,time | sort -rn |head -30 >mytmp.out 13 14 #获取线程信息15 while read line16 do17 tid=`echo $line | awk '{print $8}'`18 echo $tid19 if [ "${tid}" = "-" ]20 then21 echo "this is '-'"22 else23 echo "TID is :"$tid>>${pid}_busy_thread.log24 sixteenth=`printf "%x" $tid`25 echo "Transform to 0xxxx is :"$sixteenth >>${pid}_busy_thread.log26 /home/service/jdk1.6.0_29/bin/jstack ${pid} | grep $sixteenth -A 30 >>${pid}_busy_thread.log27 fi28 done