当cpu load大于5的时候,自动打印cpu load详细情况以及jstack和heap
#!/bin/bash touch cpu_load_monitor.log cpu_load_value=5 do_while_flag=true while $do_while_flag do load_average=`w | grep 'average' | cut -d',' -f4 | cut -d':' -f2 | cut -d' ' -f2` echo "check cpu load. load1=${load_average}, time=$(date '+%Y-%m-%d %H:%M:%S')" >> cpu_load_monitor.log if [ $load_average \> $cpu_load_value ] then do_while_flag=false msg="------cpu load alarm! ""load1 = ${load_average}, time=$(date '+%Y-%m-%d %H:%M:%S')------" echo $msg >> cpu_load_monitor.log ####打印线程cpu load快照 top -H -bn 1 > cpu_load_detail_snapshot.txt jps_pid=`ps x|grep java|grep -v pts|awk '{print $1}'` ####打印jstack echo "start to dump threads stack...pid = ${jps_pid}" >> cpu_load_monitor.log t_file="jstack_${jps_pid}.txt" jstack -l $jps_pid > $t_file ####打印heap ##echo "start to dump heap stack...pid = ${jps_pid}" >> cpu_load_monitor.log ##h_file="jheap_${jps_pid}.dump" ##jmap -dump:format=b,file=${h_file} $jps_pid echo "------task end------" >> cpu_load_monitor.log fi sleep 2 done