⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 check_dbs_free_percent.sh.txt

📁 管理online的shell程序
💻 TXT
字号:
##################################################################################  Module:	check_dbs_free_percent.sh##  Description:	Check Informix free disk space info (percent free)#       	    Note: this program used uf_onstatd.sh as a model for collecting#		        the Informix info (uses the sysmaster database)#		#  Author:	Peter R. Schmidt##  Argument 1 = Warning Limit   - IN PERCENT (a number between 1 and 100)#  Argument 2 = Emergency Limit - IN PERCENT (a number between 1 and 100)#  Argument 3 = Which dbspace to check (if not provided - check all dbspaces)##	IMPORTANT - The limits that you specify are the minimum PERCENT FREE. For example,#				check_dbs_free_percent 25 10#				means: warn me FREE SPACE falls BELOW 25% and#				declare an emergency if FREE SPACE falls BELOW 10%##  Note: currently is using a 2K pagesize##  Change Log##    Date       Person                  Description ##  12/21/1999   Peter Schmidt		Start program#  01/10/2000   Peter Schmidt		Specify a particular dbspace#  10/18/2000   Peter Schmidt		Clarify format of run-time arguments#################################################################################EXCLUDE_LIST="logical|physical"		# exclude these dbspacesPAGESIZE=2							# 2K Pagesize################################################################################if [ $# != 2 -a $# != 3 ]then	echo "Usage: check_dbs_free_percent.sh [WARNING LIMIT in PERCENT] [EMERGENCY LIMIT in PERCENT] [dbspace]"	echo "Note: send message if FREE SPACE falls BELOW the percentage limit specified."	echo "Note: argument 3 [dbspace] is optional."	exit 1fiWARNING_LIMIT=$1EMERGENCY_LIMIT=$2if [ $# = 3 ] then	SELECT_DBSPACE=$3else	SELECT_DBSPACE="*"fi################################################################################CODE_NAME=check_dbs_free_percentif [ "x$INFORMIXDIR" = "x" ]then	. db.env			# Set the informix environmentfiTMPFILE1=${CODE_NAME}_1.tmpTMPFILE2=${CODE_NAME}_2.tmpTMPFILE3=${CODE_NAME}_3.tmprm -f $TMPFILE1 $TMPFILE2 $TMPFILE3###############################################################################UNIT=K;UNITDESC=KbytesPERCENT_TYPE=Free###############################################################################dbaccess <<-EOF >/dev/null 2>&1database sysmaster;unload to '$TMPFILE3' delimiter "|"select 	syschktab.dbsnum,	syschktab.chknum,	syschktab.chksize,	syschktab.nfree,	(chksize - nfree) nused,	syschktab.flags,	syschktab.fname,	sysdbstab.namefrom        syschktab, sysdbstabwhere	syschktab.dbsnum = sysdbstab.dbsnum  and   sysdbstab.name matches "$SELECT_DBSPACE"  and   sysdbstab.name <> "sysmaster"order by 1,2EOF#----------------------------------------------------------------------awk ' \BEGIN {	pre_dbs_num=0	pre_dbs_name=""	chunk_cnt=0	FS="|"}{	dbs_num      = $1	chunk_num    = $2	chunk_size_P = $3	chunk_free_P = $4	chunk_used_P = $5	chunk_flags  = $6	chunk_name   = $7	dbs_name     = $8	#------------ BEFORE GROUP -----------------------------------------	if (dbs_num != pre_dbs_num) {		#-------- PRINT DBSPACE SUBTOTALS IF MULTIPLE CHUNKS -------		if (pre_dbs_num != 0) {			dbs_percent=0			if (dbs_size_P > 0) {				dbs_percent_used = ((dbs_used_P/dbs_size_P)*100)				dbs_percent_free = ((dbs_free_P/dbs_size_P)*100)				if (percent_type == "Used") {					dbs_percent = dbs_percent_used				} else {					dbs_percent = dbs_percent_free				}			}			if (unit == "B") {				printf "%s %10d %10d %10d %5.1f %d\n", pre_dbs_name, dbs_size_B, dbs_used_B, dbs_free_B, dbs_percent, chunk_cnt			}			if (unit == "P") {				printf "%s %10d %10d %10d %5.1f %d\n", pre_dbs_name, dbs_size_P, dbs_used_P, dbs_free_P, dbs_percent, chunk_cnt			}			if (unit == "K") {				printf "%s %10d %10d %10d %5.1f %d\n", pre_dbs_name, dbs_size_K, dbs_used_K, dbs_free_K, dbs_percent, chunk_cnt			}			if (unit == "M") {				printf "%s %10.1f %10.1f %10.1f %5.1f %d\n", pre_dbs_name, dbs_size_M, dbs_used_M, dbs_free_M, dbs_percent, chunk_cnt			}		}		chunk_cnt = 0		dbs_size_P  = 0		dbs_size_K  = 0		dbs_size_M  = 0		dbs_size_B  = 0		dbs_free_P  = 0		dbs_free_K  = 0		dbs_free_M  = 0		dbs_free_B  = 0		dbs_used_P  = 0		dbs_used_K  = 0		dbs_used_M  = 0		dbs_used_B  = 0	}	#------------ ON EVERY ROW -------------------------------------	chunk_size_K = chunk_size_P*pagesize	chunk_size_M = chunk_size_K/1024	chunk_size_B = chunk_size_K*1024	chunk_free_K = chunk_free_P*pagesize	chunk_free_M = chunk_free_K/1024	chunk_free_B = chunk_free_K*1024	chunk_used_K = chunk_used_P*pagesize	chunk_used_M = chunk_used_K/1024	chunk_used_B = chunk_used_K*1024	chunk_percent=0	if (chunk_size_P > 0) {		chunk_percent_used = ((chunk_used_P/chunk_size_P)*100)		chunk_percent_free = ((chunk_free_P/chunk_size_P)*100)	}	if (percent_type == "Used") {		chunk_percent = chunk_percent_used	} else {		chunk_percent = chunk_percent_free	}	dbs_size_P  += chunk_size_P	dbs_size_K  += chunk_size_K	dbs_size_M  += chunk_size_M	dbs_size_B  += chunk_size_B	dbs_free_P  += chunk_free_P	dbs_free_K  += chunk_free_K	dbs_free_M  += chunk_free_M	dbs_free_B  += chunk_free_B	dbs_used_P  += chunk_used_P	dbs_used_K  += chunk_used_K	dbs_used_M  += chunk_used_M	dbs_used_B  += chunk_used_B	tot_size_P  += chunk_size_P	tot_size_K  += chunk_size_K	tot_size_M  += chunk_size_M	tot_size_B  += chunk_size_B	tot_free_P  += chunk_free_P	tot_free_K  += chunk_free_K	tot_free_M  += chunk_free_M	tot_free_B  += chunk_free_B	tot_used_P  += chunk_used_P	tot_used_K  += chunk_used_K	tot_used_M  += chunk_used_M	tot_used_B  += chunk_used_B	pre_dbs_num  = dbs_num	pre_dbs_name = dbs_name	chunk_cnt++}END {	#-------- PRINT DBSPACE SUBTOTALS IF MULTIPLE CHUNKS -------	if (pre_dbs_num != 0) {		dbs_percent=0		if (dbs_size_P > 0) {			dbs_percent_used = ((dbs_used_P/dbs_size_P)*100)			dbs_percent_free = ((dbs_free_P/dbs_size_P)*100)		}		if (percent_type == "Used") {			dbs_percent = dbs_percent_used		} else {			dbs_percent = dbs_percent_free		}		if (unit == "B") {			printf "%s %10d %10d %10d %5.1f %d\n", pre_dbs_name, dbs_size_B, dbs_used_B, dbs_free_B, dbs_percent, chunk_cnt		}		if (unit == "P") {			printf "%s %10d %10d %10d %5.1f %d\n", pre_dbs_name, dbs_size_P, dbs_used_P, dbs_free_P, dbs_percent, chunk_cnt		}		if (unit == "K") {			printf "%s %10d %10d %10d %5.1f %d\n", pre_dbs_name, dbs_size_K, dbs_used_K, dbs_free_K, dbs_percent, chunk_cnt		}		if (unit == "M") {			printf "%s %10.1f %10.1f %10.1f %5.1f %d\n", pre_dbs_name, dbs_size_M, dbs_used_M, dbs_free_M, dbs_percent, chunk_cnt		}	}	#-------- PRINT FINAL TOTALS ------------------------------------}' unit=$UNIT unitdesc=$UNITDESC percent_type=$PERCENT_TYPE pagesize=$PAGESIZE $TMPFILE3 | egrep -v "$EXCLUDE_LIST" > $TMPFILE1#-------------------------------------------------------------------------------while read DBSPACE ALLOCATED USED NEW_FREE NEW_PERCENT_FREE NUM_CHUNKSdo                                    	if [ $NEW_PERCENT_FREE -lt $EMERGENCY_LIMIT ]	then		echo "******* EMERGENCY ******* (${DBSPACE})"		echo "Free space on dbspace ${DBSPACE} has dropped below the emergency limit of ${EMERGENCY_LIMIT} %"		echo "Available free space is down to ${NEW_FREE} ${UNITDESC} (${NEW_PERCENT_FREE} %)"		echo	else		if [ $NEW_PERCENT_FREE -lt $WARNING_LIMIT ]		then			echo "******* WARNING ******* (${DBSPACE})"			echo "Free space on dbspace ${DBSPACE} has dropped below the warning limit of ${WARNING_LIMIT} %"			echo "Available free space is down to ${NEW_FREE} ${UNITDESC} (${NEW_PERCENT_FREE} %)"			echo		fi	fidone < $TMPFILE1rm -f $TMPFILE1 $TMPFILE2 $TMPFILE3

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -