博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

自动抓取java堆栈

Posted on 2013-12-28 16:19  No.40  阅读(848)  评论(0编辑  收藏  举报

参数1 进程名字,参数2 最大线程数

例:

  pid为8888,达到1000个线程时自动抓取堆栈信息

  ./autojstack.sh 8888 1000 &

#!/bin/bash
fileName=$0 proc=$1 maxThreadCount=$2 declare -i count=1 threadCount=0 while true do sleep 5s pid=`ps -ef | grep $proc | grep -v 'grep'|grep -v $fileName | awk '{print $2}'` threadCount=`ps -Tfp $pid| wc -l` if (($threadCount >= $maxThreadCount)) then echo `jstack $pid>/tmp/"jstack_"$proc"_"$count` echo "jstack_"$proc"_"$count" threadCount:"$threadCount" OK" count=$count+1 if(($count > 3)) then exit 0 fi fi done

 

作者:No.40

Blog:http://www.cnblogs.com/no40