#!/bin/bash
# 设置进程的 PID
PID=12207
# 获取进程的 CPU 使用率大于 50% 的线程 ID
THREAD_IDS=$(top -H -b -n 1 -p $PID | awk '$9 > 50 && NR > 7 {print $1}')
# 判断是否有线程的 CPU 使用率大于 50%
if [ -n "$THREAD_IDS" ]; then
echo "存在 CPU 使用率大于 50% 的线程:"
# 遍历线程 ID,获取每个线程的堆栈日志
for THREAD_ID in $THREAD_IDS; do
# 将线程 ID 转换为十六进制
HEX_THREAD_ID=$(printf "%x\n" $THREAD_ID)
# 使用 jstack 命令获取线程的堆栈日志
jstack $PID | grep -A 50 $HEX_THREAD_ID
done
else
echo "没有 CPU 使用率大于 50% 的线程."
fi
获取java服务CPU使用过高线程日志脚本
最新推荐文章于 2024-09-27 12:05:02 发布