扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
#!/usr/bin/ksh
PC_LIMIT=65 # Upper limit of Swap space percentage
# before notification
THISHOST=$(hostname) # Host name of this machine
echo "\nSwap Space Report for $THISHOST\n"
date
function SUN_swap_mon
{
SW_USED=$(swap -s | awk '{print $9}' | cut -dk -f1)
SW_FREE=$(swap -s | awk '{print $11}' | cut -dk -f1)
((SW_TOTAL = SW_USED + SW_FREE))
PERCENT_USED=$(bc <<EOF
scale=4
($SW_USED / $SW_TOTAL) * 100
EOF
)
PERCENT_FREE=$(bc <<EOF
scale=4
($SW_FREE / $SW_TOTAL) * 100
EOF
)
# Convert the KB measurements to MB measurements
((SW_TOTAL_MB = SW_TOTAL / 1000))
((SW_USED_MB = SW_USED / 1000))
((SW_FREE_MB = SW_FREE / 1000))
# Produce the remaining part of the report
echo "\nTotal Amount of Swap Space:\t${SW_TOTAL_MB}MB"
echo "Total KB of Swap Space Used:\t${SW_USED_MB}MB"
echo "Total KB of Swap Space Free:\t${SW_FREE_MB}MB"
echo "\nPercent of Swap Space Used:\t${PERCENT_USED}%"
echo "\nPercent of Swap Space Free:\t${PERCENT_FREE}%"
# Grab the integer portion of the percent used
INT_PERCENT_USED=$(echo $PERCENT_USED | cut -d. -f1)
# Check to see if the percentage used maxmum threshold
# has beed exceeded
if (( PC_LIMIT <= INT_PERCENT_USED ))
then
# Percent used has exceeded the threshold, send notification
tput smso # Turn on reverse video!
echo "\n\nWARNING: Swap Space has Exceeded the ${PC_LIMIT}% Upper Limit!\n"
tput rmso # Turn off reverse video!
fi
echo "\n"
}
function Linux_swap_mon
{
free -m | grep -i swap | while read junk SW_TOTAL SW_USED SW_FREE
do
PERCENT_USED=$(bc <<EOF
scale=4
($SW_USED / $SW_TOTAL) * 100
EOF
)
PERCENT_FREE=$(bc <<EOF
scale=4
($SW_FREE / $SW_TOTAL) * 100
EOF
)
# Produce the rest of the paging space report:
echo "\nTotal Amount of Swap Space:\t${SW_TOTAL}MB"
echo "Total KB of Swap Space Used:\t${SW_USED}MB"
echo "Total KB of Swap Space Free:\t${SW_FREE}MB"
echo "\nPercent of Swap Space Used:\t${PERCENT_USED}%"
echo "\nPercent of Swap Space Free:\t${PERCENT_FREE}%"
# Grap the integer portion of the percent used to
# test for the over limit threshold
INT_PERCENT_USED=$(echo $PERCENT_USED | cut -d. -f1)
if (( PC_LIMIT <= INT_PERCENT_USED ))
then
tput smso
echo "\n\nWARNING: Paging Space has Exceeded the \
${PC_LIMIT}% Upper Limit!\n"
tput rmso
fi
done
echo "\n"
}
###########################################################
function HP_UX_swap_mon
{
############# CAPTURE AND PROCESS THE DATA ################
# Start a while read loop by using the piped in input from
# the swapinfo -tm command output.
swapinfo -tm | grep dev | while read junk SW_TOTAL SW_USED \
SW_FREE PERCENT_USED junk2
do
# Calculate the percentage of free swap space
((PERCENT_FREE = 100 - $(echo $PERCENT_USED | cut -d% -f1) ))
echo "\nTotal Amount of Swap Space:\t${SW_TOTAL}MB"
echo "Total MB of Swap Space Used:\t${SW_USED}MB"
echo "Total MB of Swap Space Free:\t${SW_FREE}MB"
echo "\nPercent of Swap Space Used:\t${PERCENT_USED}"
echo "\nPercent of Swap Space Free:\t${PERCENT_FREE}%"
# Check for paging space exceeded the predefined limit
if (( PC_LIMIT <= $(echo $PERCENT_USED | cut -d% -f1) ))
then
# Swap space is over the predefined limit, send notification
tput smso # Turn on reverse video!
echo "\n\nWARNING: Swap Space has Exceeded the\
${PC_LIMIT}% Upper Limit!\n"
tput rmso # Turn reverse video off!
fi
done
echo "\n"
}
###########################################################
function AIX_paging_mon
{
################ DEFINE VARIABLES HERE ####################
PAGING_STAT=/tmp/paging_stat.out # Paging Stat hold file
###########################################################
############# CAPTURE AND PROCESS THE DATA ################
# Load the data in a file without the column headings
lsps -s | tail +2 > $PAGING_STAT
# Start a while loop and feed the loop from the bottom using
# the $PAGING_STAT file as redirected input
while read TOTAL PERCENT
do
# Clean up the data by removing the suffixes
PAGING_MB=$(echo $TOTAL | cut -d 'MB' -f1)
PAGING_PC=$(echo $PERCENT | cut -d% -f1)
# Calculate the missing data: %Free, MB used and MB free
(( PAGING_PC_FREE = 100 - PAGING_PC ))
(( MB_USED = PAGING_MB * PAGING_PC / 100 ))
(( MB_FREE = PAGING_MB - MB_USED ))
# Produce the rest of the paging space report:
echo "\nTotal MB of Paging Space:\t$TOTAL"
echo "Total MB of Paging Space Used:\t${MB_USED}MB"
echo "Total MB of Paging Space Free:\t${MB_FREE}MB"
echo "\nPercent of Paging Space Used:\t${PERCENT}"
echo "\nPercent of Paging Space Free:\t${PAGING_PC_FREE}%"
# Check for paging space exceeded the predefined limit
if ((PC_LIMIT <= PAGING_PC))
then
# Paging space is over the limit, send notification
tput smso # Turn on reverse video!
echo "\n\nWARNING: Paging Space has Exceeded the ${PC_LIMIT}% \
Upper Limit!\n"
tput rmso # Turn off reverse video
fi
done < $PAGING_STAT
rm -f $PAGING_STAT
# Add an extra new line to the output
echo "\n"
}
###########################################################
################## BEGINNING OF MAIN ######################
###########################################################
###########################################################
################ DEFINE VARIABLES HERE ####################
PC_LIMIT=65 # Upper limit of Swap space percentage
# before notification
THISHOST=$(hostname) # Host name of this machine
###########################################################
# Find the Operating System and execute the correct function
case $(uname) in
AIX) AIX_paging_mon
;;
HP-UX) HP_UX_swap_mon
;;
Linux) Linux_swap_mon
;;
SunOS) SUN_swap_mon
;;
esac
# End of all-in-one_swapmon.ksh
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者