查找消耗cpu最高的Java进程

复制代码
#!/bin/bash
if [ -z "$1" ]; then
        ### 1.先找到消耗cpu最高的Java进程 ###
        pid=`ps -eo pid,%cpu,cmd --sort=-%cpu | grep java | grep -v grep | head -1 | awk 'END{print $1}' `
        if [ "$pid" =  ""  ]; then
                echo "无Java进程,退出。"
                exit
        fi
else
        pid=$1
fi
curTime=$(date +%Y%m%dT%H%M%S)
dumpFilePath="./pid$pid−$curTime.jstack"

echo -e  "java 进程ID为 $pid" > $dumpFilePath
ps -ef|grep $pid >> $dumpFilePath
topThreadId=`top -b -n 1 -Hp $pid|grep java|head -n 1|awk '{print $1}'`
cpuUsage=`top -b -n 1 -Hp $pid|grep java|head -n 1|awk '{print $9}'`
echo -e  "最耗cpu的使用率为 $cpuUsage">>$dumpFilePath
topThreadId16=`printf "%x" $topThreadId`
topThreadId16ThreadName="nid=0x$topThreadId16"
echo -e  "最耗cpu的java线程ID 16进制为 $topThreadId16ThreadName">>$dumpFilePath
jstack -l $pid >>$dumpFilePath
#threadDe -e tail=`jstack ${pid}|grep ${topThreadId16} -C 10`
#echo "$threadDetail
复制代码

 

posted @   wujf  阅读(42)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示