JVM检查脚本

#!/bin/bash
set -e

read -p "Please import project name:" name

pid=`ps -ef|grep $name|grep -v grep|awk '{print $2}'`

#########################################################
inithisto() {    
jmap -histo:live $pid|head -30|tail -29
}

initgcutil() {
jstat -gcutil $pid 1000 5
}

initheap() {
jmap -heap $pid
}

inittop() {
top -Hp $pid
}

initjstack() {
  TotalThreads=`jstack $pid | grep "java.lang.Thread.State" | wc -l`
  echo -e "Total Threads:\n\033[32;40m [$TotalThreads] \033[0m"
  RunnableThreads=`jstack $pid | grep "RUNNABLE" | wc -l`
  echo -e "Runnable Threads:\n\033[32;40m [$RunnableThreads] \033[0m"
  WaitingThreads=`jstack $pid | grep "WAITING (on object monitor)" | wc -l`
  echo -e "WAITING (on object monitor) Threads:\n\033[32;40m [$WaitingThreads] \033[0m"
  BlockedThreads=`jstack $pid | grep "BLOCKED" | wc -l`
  echo -e "BLOCKED Threads:\n\033[32;40m [$BlockedThreads] \033[0m"
  if [ $BlockedThreads -gt 0 ]; then
     jstack $pid | grep -A8 "BLOCKED"
  fi
}
#########################################################
echo -e "##############################\nproject name:$name pid:$pid\n##############################"
chooseFlag=true
while $chooseFlag ;do
echo A.jmap -histo:live $pid
echo B.jstat -gcutil $pid 1000 5
echo C.jmap -heap $pid
echo D.top -Hp $pid
echo E.jstack $pid statistics
echo Q.exit
#########################################################
read -p "Select the type check:" number

case $number in
A|a)
    inithisto
    ;;
B|b)
    initgcutil
    ;;
C|c)
    initheap
    ;;
D|d)
    inittop
    ;;
E|e)
    initjstack
    ;;
Q|q)
    exit
        ;;
esac
done
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值