linux經過內存的佔用比shell 記錄日誌

#服務監控腳本
#!/bin/bash
#monitor available disk space
#查看內存佔用的百分比  free -m | sed -n '2p' | awk '{print "used mem is "$3"M,total mem is "$2"M,used percent is "$3/$2*100"%"}'

#系統分配的區總量  
mem_total=`free -m | grep Mem | awk '{print  $2}'`  
 
#當前剩餘的free大小  
mem_free=`free -m | grep Mem | awk '{print  $4}'`  
 
#當前已使用的used大小  
mem_used=`free -m | grep Mem | awk '{print  $3}'`  
 
 
if (($mem_used != 0)); then  
 
#若是已被使用,則計算當前剩餘free所佔總量的百分比,用小數來表示,要在小數點前面補一個整數位0  
 mem_per=0`echo "scale=2;$mem_free/$mem_total" | bc`  
 DATA="$(date -d "today" +"%Y-%m-%d-%H-%M") free percent is : $mem_per"

#設置的告警值爲20%(即便用超過80%的時候告警)。  
   mem_warn=0.20  
 
#當前剩餘百分比與告警值進行比較(當大於告警值(即剩餘20%以上)時會返回1,小於(即剩餘不足20%)時會返回0 )  
   mem_now=`expr $mem_per \> $mem_warn`  
 
#若是當前使用超過80%(即剩餘小於20%,上面的返回值等於0),釋放內存
  if (($mem_now == 0)); then  

        DAT="`date +%Y%m%d`"
		HOUR="`date +%H`"
		DIR="/home/weblog/host_${DAT}/${HOUR}"
		DELAY=60
		COUNT=60
		# whether the responsible directory exist
		if ! test -d ${DIR}
		then
		    /bin/mkdir -p ${DIR}
		fi
		# general check
		export TERM=linux
		/usr/bin/top -b -d ${DELAY} -n ${COUNT} > ${DIR}/top_${DAT}.log 2>&1 &
		# cpu check
		#/usr/bin/sar -u ${DELAY} ${COUNT} > ${DIR}/cpu_${DAT}.log 2>&1 &
		#/usr/bin/mpstat -P 0 ${DELAY} ${COUNT} > ${DIR}/cpu_0_${DAT}.log 2>&1 &
		#/usr/bin/mpstat -P 1 ${DELAY} ${COUNT} > ${DIR}/cpu_1_${DAT}.log 2>&1 &
		# memory check
		/usr/bin/vmstat ${DELAY} ${COUNT} > ${DIR}/vmstat_${DAT}.log 2>&1 &
		# I/O check
		#/usr/bin/iostat ${DELAY} ${COUNT} > ${DIR}/iostat_${DAT}.log 2>&1 &
		# network check
		#/usr/bin/sar -n DEV ${DELAY} ${COUNT} > ${DIR}/net_${DAT}.log 2>&1 &
		#/usr/bin/sar -n EDEV ${DELAY} ${COUNT} > ${DIR}/net_edev_${DAT}.log 2>&1 &
  fi 
fi
相關文章
相關標籤/搜索