背景
需求
1.CPU 60%
2.内存利用率
3.硬盘利用率
4.TCP连接状态
设计思路
- 通过
vmstat获取其中显示的CPU使用情况参数。并且输出即可。 - 通过
free -m获取内存的使用情况参数。并且输出即可。 - 通过
df -h命令查看/dev关键字的行,获取磁盘使用情况参数。并且输出即可。
#!/bin/bashfunction cpu(){NUM=1 #初次检查次数while [ $NUM -le 3 ];doutil=`vmstat | awk '{if(NR==3)print 100-$15"%"}'`#查看CPU空闲占比user=`vmstat | awk '{if(NR==3)print $13}'`#查看CPU使用占比sys=`vmstat | awk '{if(NR==3)print $14}'`#查看IO使用率iowait=`vmstat | awk '{if(NR==3)print $16}'`#等待IO使用率echo "CPU使用率为: $util,等待磁盘IO响应使用率:$iowait"let NUM++ #执行第一次检查次数sleep 1done}#创建函数 cpu# 设置第一次检查# 循环检查3次,# 通过vmstat命令 获取CPU空闲的占比# 通过vmstat命令 获取当前CPU使用占比# 通过vmstat命令 查看IO使用占比# 通过vmstat命令 查看IO使用率# 输出获取的数值# 次数++# 休息1秒,获取较准确数值function memory(){total=`free -m | awk '{if(NR==2)print $2"M"}'`used=`free -m | awk '{if(NR==2)print $2-$NF}'`available=`free -m | awk '{if(NR==2)print $NF}'`echo "内存-总大小:${total},使用的:${used},剩余:${available}"}#创建函数 memory# 通过free命令 查看总内存# 通过free命令 查看使用内存# 通过free命令 查看剩余内存# 输出获取的数值信息function disk(){fs=$(df -h |awk '/^\/dev/{print $1}')for p in $fs;domounted=$(df -h|awk '$1=="'$p'"{print $NF}')size=$(df -h | awk '$1=="'$p'"{print $2}')used=$(df -h | awk '$1=="'$p'"{print $3}')used_percent=$(df -h | awk '$1=="'$p'"{print $5}')echo "硬盘挂载点:${mounted},总大小:${size},使用:${used},使用率:${used_percent}"done}#创建函数 disk#(虽然df -h获取了很多挂载信息,但是只有/dev/下的才是我们需要的)# 通过df -h命令获取/dev开头的信息的第1列# 设置循环,将获取的信息放入# 通过df -h打印匹配的数值,获取挂载点# 通过df -h打印匹配的数值,获取总内存# 通过df -h打印匹配的数值,获取使用内存# 通过df -h打印匹配的数值,获取使用率# 输出获取的数值function tcp_status(){summary=$(ss -antp|awk '{status[$1]++}END{for(i in status) printf i":"status[i]""}')echo "TCP连接装填 - ${summary}"}#创建函数 summary# 使用ss -antp查看TCP监听的情况,并且将第一列的数据累加,并且输出。i是监听状态,status[i]是数量# 打印出最后的结果cpumemorydisktcp_status
