#!/bin/bash
# 设置抓取次数计数器
capture_count=0
# 获取Java进程的PID
pid=$(pgrep -f "java")
while [ $capture_count -lt 5000 ]; do
# 定义文件名
output_file="capture_$capture_count.txt"
java_pids=$(pgrep -fl "java" | awk '{print $1}')
# 获取当前线程数
#cpu_usage=$(top -bn 1 | grep "Cpu(s)" | awk '{print $2 + $4}')
thread_count=$(ps -T -p $java_pids| wc -l)
# 获取当前时间
current_time=$(date +"%Y-%m-%d %H:%M:%S")
if [ $(expr "$thread_count" ">" 730) -eq 1 ]; then
echo "High thread count: $thread_count"
# 抓取每个Java进程的堆栈信息
for pid in $java_pids; do
jstack_output=$(jstack $pid)
echo "$current_time $jstack_output" > "$output_file"
echo "JVM Stack for PID $pid (Capture $capture_count):"
done
# 增加抓取次数计数器
capture_count=$((capture_count + 1))
else
echo "thread count: $current_time $thread_count"
fi
#sleep 1
#10毫秒
usleep 10000
done