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

📄 uf_onstatd.sh.txt

📁 管理online的shell程序
💻 TXT
字号:
#!/usr/bin/ksh#################################################################################       Module:         uf_onstatd.sh#       Author:         Peter R. Schmidt#       Description:    User friendly onstat -d (uses sysmaster)##       Change Log##         Date    Name               Description.................#       07/09/99  Peter R. Schmidt   Start Program#       07/27/99  Peter R. Schmidt   Option to show % free or % used################################################################################OUTPUT=uf_onstatd.outTMPFILE=uf_onstatd.tmpXDATE=`date +%D-%T`MACHINE=`uname -n`BG=falseBOLD=`tput smso`NORM=`tput rmso`###############################################################################if [ $# != 0 ]then        ARG1=$1        case $ARG1 in                 1|2|3|4) OPTION1=$ARG1;;                 *)       OPTION1=2;;         esac        ARG2=$2        case $ARG1 in                 1|2) OPTION2=$ARG2;;                 *)   OPTION2=1;;         esac        BG=trueelse	while true	do        	echo        	echo "1 = Report in Megs"        	echo "2 = Report in Kbytes"        	echo "3 = Report in Pages"        	echo "4 = Report in Bytes"        	echo "0 = Exit this program"        	echo        	echo "Enter reporting unit desired (0,1,2,3,4)"        	read OPTION1	        	case $OPTION1 in 0|1|2|3|4) break;; esac        	echo        	echo "Error - you must enter 0,1,2,3 or 4!"        	echo	done	while true	do        	echo        	echo "1 = Print Percent USED"        	echo "2 = Print Percent FREE"        	echo "0 = Exit this program"        	echo        	echo "Enter display option desired (0,1,2)"        	read OPTION2	        	case $OPTION2 in 0|1|2) break;; esac        	echo        	echo "Error - you must enter 0, 1 or 2!"        	echo	donefi        case $OPTION1 in        0)      echo "End requested by user"; exit;;	1)	UNIT=M; UNITDESC=Mbytes;;	2)	UNIT=K; UNITDESC=Kbytes;;	3)	UNIT=P; UNITDESC=Pages;;	4)	UNIT=B; UNITDESC=Bytes;;esaccase $OPTION2 in        0)      echo "End requested by user"; exit;;	1)	PERCENT_TYPE=Used;;	2)	PERCENT_TYPE=Free;;esacif [ -f $OUTPUT ]then        rm -f $OUTPUTfi#----------------------------------------------------------------------echo "Collecting dbs/chunk info from the sysmaster database..."        dbaccess << EOFdatabase sysmaster;unload to '$TMPFILE' 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 <> "sysmaster"order by 1,2EOFecho echo "Completed - formatting report..."echo#----------------------------------------------------------------------awk ' \BEGIN {	pagesize=2	pre_dbs_num=0	pre_dbs_name=""	chunk_cnt   = 0	FS="|"}{	if (NR == 1) {       		split (xdate,b,"-")       		udate=b[1]       		utime=b[2]	       		printf "\n%s %s           Informix Disk Report         for %s@%s\n", udate, utime, server, machine       		printf "                             (Numbers in %s)\n\n", unitdesc       		print "DBS Chk   Allocated      Used       Free Percent Dbspace"		printf "Num Num     Space       Space      Space  %s   Chunk\n\n", percent_type	}	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) && (chunk_cnt > 1)) {			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 "%3d     %10d*%10d*%10d*%5.1f   * Total for: %s\n", pre_dbs_num, dbs_size_B, dbs_used_B, dbs_free_B, dbs_percent, pre_dbs_name			}			if (unit == "P") {				printf "%3d      %10d*%10d*%10d*%5.1f   * Total for: %s\n", pre_dbs_num, dbs_size_P, dbs_used_P, dbs_free_P, dbs_percent, pre_dbs_name			}			if (unit == "K") {				printf "%3d     %10d*%10d*%10d*%5.1f   * Total for: %s\n", pre_dbs_num, dbs_size_K, dbs_used_K, dbs_free_K, dbs_percent, pre_dbs_name			}			if (unit == "M") {				printf "%3d     %10.1f*%10.1f*%10.1f*%5.1f   * Total for: %s\n", pre_dbs_num, dbs_size_M, dbs_used_M, dbs_free_M, dbs_percent, pre_dbs_name			}		}		chunk_cnt = 0		if (pre_dbs_num != 0) {			print ""		}		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		printf "%3d                                              Dbspace: %s\n",dbs_num, dbs_name	}	#------------ 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	if (unit == "B") {		printf "%3d %3d %10d %10d %10d %5.1f   %s\n", dbs_num, chunk_num, chunk_size_B, chunk_used_B, chunk_free_B, chunk_percent, chunk_name	}	if (unit == "P") {		printf "%3d %3d %10d %10d %10d %5.1f   %s\n", dbs_num, chunk_num, chunk_size_P, chunk_used_P, chunk_free_P, chunk_percent, chunk_name	}	if (unit == "K") {		printf "%3d %3d %10d %10d %10d %5.1f   %s\n", dbs_num, chunk_num, chunk_size_K, chunk_used_K, chunk_free_K, chunk_percent, chunk_name	}	if (unit == "M") {		printf "%3d %3d %10.1f %10.1f %10.1f %5.1f   %s\n", dbs_num, chunk_num, chunk_size_M, chunk_used_M, chunk_free_M, chunk_percent, chunk_name	}	pre_dbs_num  = dbs_num	pre_dbs_name = dbs_name	chunk_cnt++}END {	#-------- PRINT DBSPACE SUBTOTALS IF MULTIPLE CHUNKS -------	if ((pre_dbs_num != 0) && (chunk_cnt > 1)) {		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 "%3d     %10d*%10d*%10d*%5.1f   * Total for: %s\n", pre_dbs_num, dbs_size_B, dbs_used_B, dbs_free_B, dbs_percent, pre_dbs_name		}		if (unit == "P") {			printf "%3d      %10d*%10d*%10d*%5.1f   * Total for: %s\n", pre_dbs_num, dbs_size_P, dbs_used_P, dbs_free_P, dbs_percent, pre_dbs_name		}		if (unit == "K") {			printf "%3d     %10d*%10d*%10d*%5.1f   * Total for: %s\n", pre_dbs_num, dbs_size_K, dbs_used_K, dbs_free_K, dbs_percent, pre_dbs_name		}		if (unit == "M") {			printf "%3d     %10.1f*%10.1f*%10.1f*%5.1f   * Total for: %s\n", pre_dbs_num, dbs_size_M, dbs_used_M, dbs_free_M, dbs_percent, pre_dbs_name		}	}	#-------- PRINT FINAL TOTALS ------------------------------------	print ""	tot_percent=0	if (tot_size_P > 0) {		tot_percent_used = ((tot_used_P/tot_size_P)*100)		tot_percent_free = ((tot_free_P/tot_size_P)*100)	}	if (percent_type == "Used") {		tot_percent = tot_percent_used	} else {		tot_percent = tot_percent_free	}	if (unit == "B") {		printf "Total * %10d %10d %10d %5.1f   ** Final Totals\n", tot_size_B, tot_used_B, tot_free_B, tot_percent	}	if (unit == "P") {		printf "Total * %10d %10d %10d %5.1f   ** Final Totals\n", tot_size_P, tot_used_P, tot_free_P, tot_percent	}	if (unit == "K") {		printf "Total * %10d %10d %10d %5.1f   ** Final Totals\n", tot_size_K, tot_used_K, tot_free_K, tot_percent	}	if (unit == "M") {		printf "Total * %10.1f %10.1f %10.1f %5.1f   ** Final Totals\n", tot_size_M, tot_used_M, tot_free_M, tot_percent	}}' xdate=$XDATE machine=$MACHINE unit=$UNIT unitdesc=$UNITDESC server=$INFORMIXSERVER percent_type=$PERCENT_TYPE $TMPFILE > $OUTPUTrm -f $TMPFILEif [ $BG = false ]then        pg $OUTPUTfiechoecho "Note: Output report is in $OUTPUT"

⌨️ 快捷键说明

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