如下shell获取占用内存最高的进程id,我们假如服务器上只有java服务,java会内存溢出
#sh CURRENT_FREE_CPU=90 CURRENT_FREE_CPU=`vmstat 1 3 |sed -n '3,$p' |awk '{x = x + $15} END {print x/3}' |awk -F. '{print $1}'` echo $CURRENT_FREE_CPU pid=0 pid=`ps aux | sort -k4nr | head -1 | awk '{print $2}'` if [ $CURRENT_FREE_CPU -lt 30 ] && [ ! -f "/root/generated" ] then echo "" > generated /usr/bin/jmap -dump:format=b,file=heapDump $pid fi
crontab 每30秒一次
crontab -e * * * * * sleep 30; /root/monitorcpu.sh