使用shell脚本进行服务器系统监控——页面调度与交换空间监控

开发者在线 Builder.com.cn 更新时间:2008-01-10作者:徐建明 来源:CSDN

本文关键词: 交换空间 页面调度 监控 服务器

#!/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 $THISHOSTn"
date

function SUN_swap_mon
{
SW_USED=$(swap -s | awk '{print }' | cut -dk -f1)
SW_FREE=$(swap -s | awk '{print }' | 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$MB"
echo "Total KB of Swap Space Used:t$MB"
echo "Total KB of Swap Space Free:t$MB"
echo "nPercent of Swap Space Used:t$%"
echo "nPercent of Swap Space Free:t$%"

# 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 "nnWARNING: Swap Space has Exceeded the $% 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$MB"
     echo "Total KB of Swap Space Used:t$MB"
     echo "Total KB of Swap Space Free:t$MB"
     echo "nPercent of Swap Space Used:t$%"
     echo "nPercent of Swap Space Free:t$%"

     # 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 "nnWARNING: Paging Space has Exceeded the
$% 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$MB"
    echo "Total MB of Swap Space Used:t$MB"
    echo "Total MB of Swap Space Free:t$MB"
    echo "nPercent of Swap Space Used:t$"
    echo "nPercent of Swap Space Free:t$%"

    # 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 "nnWARNING: Swap Space has Exceeded the
 $% 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"
     echo "Total MB of Paging Space Free:t$MB"
     echo "nPercent of Paging Space Used:t$"
     echo "nPercent of Paging Space Free:t$%"

     # 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 "nnWARNING: Paging Space has Exceeded the $%
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
 


查看本文来源

用户评论

  • 用户名
  • 评论内容