扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
#!/bin/ksh
SECONDS=300 # Defines the number of seconds for each sample
INTERVAL=2 # Defines the total number of sampling intervals
STATCOUNT=0 # Initialize a loop counter to 0, zero
OS=$(uname) # Defines the UNIX flavor
###################################################
##### SETUP THE ENVIRONMENT FOR EACH OS HERE ######
###################################################
# These "F-numbers" point to the correct field in the
# command output for each UNIX flavor.
case $OS in
AIX) # AIX has four relative columns in the output
F1=14
F2=15
F3=16
F4=17
echo "\nThe Operating System is $OS\n"
;;
HP-UX) # HP-UX only has three relative columns in the output
F1=16
F2=17
F3=18
F4=1 # This "F4=1" is bogus and not used for HP-UX
echo "\nThe Operating System is $OS\n"
;;
Linux) # Linux only has three relative columns in the output
F1=14
F2=15
F3=16
F4=1 # This "F4=1" is bogus and not used for Linux
echo "\nThe Operating System is $OS\n"
;;
SunOS) # SunOS only has three relative columns in the output
F1=20
F2=21
F3=22
F4=1 # This "F4=1" is bogus and not used for SunOS
echo "\nThe Operating System is $OS\n"
;;
*) echo "\nERROR: $OS is not a supported operating system\n"
echo "\n\t...EXITING...\n"
exit 1
;;
esac
###################################################
######## BEGIN GATHERING STATISTICS HERE ##########
###################################################
echo "Gathering CPU Statistics using vmstat...\n"
echo "There are $INTERVAL sampling periods with"
echo "each interval lasting $SECONDS seconds"
echo "\n...Please wait while gathering statistics...\n"
# Use "vmstat" to monitor the CPU utilization and
# remove all lines that contain alphabetic characters
# and blank spaces. Then use the previously defined
# field numbers, for example F1=20,to point directly
# to the 20th position, for this example. The syntax
# for this techniques is ==> $'$F1', and points directly
# to the $20 positional parameter.
vmstat $SECONDS $INTERVAL | egrep -v '[a-zA-Z]|^$' \
| awk '{print $'$F1', $'$F2', $'$F3', $'$F4'}' \
| while read FIRST SECOND THIRD FORTH
do
if ((STATCOUNT == 1)) # Loop counter to get the second set
then # of data produces by "vmstat"
case $OS in # Show the results based on the UNIX flavor
AIX)
echo "\nUser part is ${FIRST}%"
echo "System part is ${SECOND}%"
echo "Idle part is ${THIRD}%"
echo "I/O wait state is ${FORTH}%\n"
;;
HP-UX|Linux|SunOS)
echo "\nUser part is ${FIRST}%"
echo "System part is ${SECOND}%"
echo "Idle time is ${THIRD}%\n"
;;
esac
fi
((STATCOUNT = STATCOUNT + 1)) # Increment the loop counter
done
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者