一键查看服务器CPU,内存,硬盘,TCP连接状态
在实际生产环境中,我们需要时时刻刻关注服务器硬件的使用情况,比如查看cpu使用率我们可以用vmstat,top命令,查看内存使用率我们可以用free命令,查看硬盘使用率可以使用df命令,tcp连接状态使用netstat命令,但是这样操作起来不仅浪费时间,而且显示效果也不直观,更会占用运维工作的碎片时间。所以我们可以来写这样一个脚本,一键查看服务器资源利用率并且让他显示的更加直观。
#!/bin/bash
#获取cpu利用率
function cpu () {
util=$(vmstat |awk '{if(NR==3)print $13+$14}')
iowait=$(vmstat |awk '{if(NR==3)print $16}')
echo "CPU-使用率:${util}%,等待磁盘IO响应使用率: ${iowait}%"
}
#获取内存利用率·
function memory () {
total=$(free -m |awk '{if(NR==2)printf "%.1f",$2/1024}')
used=$(free -m |awk '{if(NR==2)printf "%.1f",($2-$NF)/1024}')
available=$(free -m |awk '{if(NR==2)printf "%.1f",$NF/1024}')
echo "内存-总大小:${total}G,已使用:${used}G,剩余:${available}G"
}
#获取硬盘利用率
function disk () {
fs=$(df -h |awk '/^\/dev/{print $1}')
for p in $fs; do
mounted=$(df -h |awk -v p=$p '$1==p{print $NF}')
size=$(df -h |awk -v p=$p '$1==p{print $2}')
used=$(df -h |awk -v p=$p '$1==p{print $3}')
used_percent=$(df -h |awk -v p=$p '$1==p{print $5}' )
echo "硬盘-挂载点:$mounted,总大小:$size,已使用:$used,使用率:$used_percent"
done
}
#获取TCP连接状态
function tcp_status() {
summary=$(netstat -anpt |awk '{a[$6]++}END{for(i in a)printf i":"a[i]" "}')
echo "TCP连接状态-$summary"
}
cpu
memory
disk
tcp_status
执行显示效果如下图所示