mem_cpu
#!/bin/bash
cpu_status_per_second(){
local CPU_1=$(cat /proc/stat | grep -i ^'cpu ' | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}')
local SYS_IDLE_1=$(echo $CPU_1 | awk '{print $4}')
local Total_1=$(echo $CPU_1 | awk '{printf "%.f",$1+$2+$3+$4+$5+$6+$7}')
sleep 1
local CPU_2=$(cat /proc/stat | grep -i ^'cpu ' | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}')
local SYS_IDLE_2=$(echo $CPU_2 | awk '{print $4}')
local Total_2=$(echo $CPU_2 | awk '{printf "%.f",$1+$2+$3+$4+$5+$6+$7}')
local SYS_IDLE=`expr $SYS_IDLE_2 - $SYS_IDLE_1`
local Total=`expr $Total_2 - $Total_1`
local Idle=`expr $SYS_IDLE \* 100`
local SYS_USAGE=`expr $Idle / $Total`
local SYS_Rate=`expr 100 - $SYS_USAGE`
echo "******************The CPU USE Rate : $SYS_Rate%******************"
}
#$1 seconds, indicate this case will be end within $1 seconds
cpu_status(){
#time
local rp=${1:-10}
while [ $rp -gt 0 ]
do
cpu_status_per_second
rp=`expr $rp - 1`
done
}
# total used free shared buffers
#Mem: 510964 504816 6148 0 279784
#-/+ buffers: 225032 285932
#Swap: 0 0 0
mem_status_total(){
# total used free shared buffers cached
#Mem: 510964 504700 6264 0 279460
local MEM_STAT=`free | grep -i ^mem`
#echo $MEM_STAT
local MEM_USE=`echo $MEM_STAT | awk '{printf "%f", $3/$2*100}'`
echo "******************The MEMORY TOTAL USE Rate : $MEM_USE%******************"
}
#query /usr/local/bin/xxx process memery status
#$1----- specify app name, e.g. /usr/local/bin
mem_status_pids(){
local process_name="$1"
local pid
local mem_k
local proccess_info
for pid in `ps -a | grep "$process_name" | awk '{print $1}'`
do
mem_k=`pmap $pid | grep "mapped:" | awk '{print $2}'`
proccess_info=`ps aux | awk '{ print $2 "\t" $1 "\t" $3 }'|grep "$pid" | sed -n '1p'`
[ -n "$proccess_info" ] && printf "******The PROCESS %-40s MEM_USE_RATE: %-10s\n" "$proccess_info" $mem_k
done
}
#$1-----specify running times, 10 means running 10 times
mem_cpu_status(){
local rp=${1:-1000000}
local pids
local mem_k
local proccess_info
echo "$rp, repeat times monitor"
while [ $rp -gt 0 ]
do
mem_status_total
mem_status_pids "/usr/local/bin/aim"
#cpu_status_per_second
sleep 10
rp=`expr $rp - 1`
done
return 0
}
mem_cpu_status $@

浙公网安备 33010602011771号