Skip to content

Instantly share code, notes, and snippets.

@kevintop
Created June 8, 2016 07:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kevintop/2f99dc2c590b9ff8be06bc670ef5dd2a to your computer and use it in GitHub Desktop.
Save kevintop/2f99dc2c590b9ff8be06bc670ef5dd2a to your computer and use it in GitHub Desktop.
在linux环境找到最耗费cpu的Java应用的线程堆栈
#!/bin/bash
if [ $# -eq 0 ];then
echo "please enter java pid"
exit -1
fi
pid=$1
jstack_cmd=""
if [[ $JAVA_HOME != "" ]]; then
jstack_cmd="$JAVA_HOME/bin/jstack"
else
r=`which jstack 2>/dev/null`
if [[ $r != "" ]]; then
jstack_cmd=$r
else
echo "can not find jstack"
exit -2
fi
fi
#line=`top -H -o %CPU -b -n 1 -p $pid | sed '1,/^$/d' | grep -v $pid | awk 'NR==2'`
line=`top -H -b -n 1 -p $pid | sed '1,/^$/d' | sed '1d;/^$/d' | grep -v $pid | sort -nrk9 | head -1`
echo "$line" | awk '{print "tid: "$1," cpu: %"$9}'
tid_0x=`printf "%0x" $(echo "$line" | awk '{print $1}')`
$jstack_cmd $pid | grep $tid_0x -A20 | sed -n '1,/^$/p'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment