在服务器管理的过程中,了解服务器的各项性能指标是至关重要的。无论是CPU的负载情况,内存使用情况,还是硬盘的存储空间以及TCP连接状态,这些都是我们判断服务器健康状态和性能的重要依据。然而,手动一项项去检查这些指标,既繁琐又耗时。现在,有一个神奇的脚本可以帮你一键查看所有这些关键信息!
这个脚本包含了四个功能强大的函数,分别能查看CPU使用率、内存使用情况、硬盘空间以及TCP连接状态。让我们一起来详细了解一下这个脚本的魔力所在吧!
1. CPU使用情况一目了然
通过cpu
函数,你能够迅速获取CPU的使用率和等待磁盘IO的相应使用率。这两个指标对于评估服务器的运算能力和磁盘性能至关重要。
这段代码通过vmstat
命令获取CPU的使用数据,并经过awk
处理,最后输出我们关心的使用率指标。
2. 内存使用情况尽在掌握
memory
函数则为你提供了服务器内存的总大小、已使用量和剩余量的详细数据。通过这些信息,你可以轻松判断服务器的内存是否充足,是否需要扩容。
该函数利用
free -m
命令来获取内存的使用情况,并通过awk
进行数据处理,最终输出清晰易懂的内存使用情况报告。
3. 硬盘空间了如指掌
通过disk
函数,你可以查看服务器上所有硬盘分区的挂载点、总大小、已使用空间和使用率。这对于监控磁盘空间的使用情况,预防磁盘满载至关重要。
这个函数通过
df -h
命令获取硬盘的使用数据,并结合awk
进行处理,为你提供详细的硬盘空间报告。
4. TCP连接状态清晰可见
最后,tcp_status
函数能够展示当前服务器上所有的TCP连接状态。这对于监控网络连接、发现潜在的网络问题非常有帮助。
此函数利用
ss -antp
命令来获取TCP连接的状态,并通过awk
进行统计,最终输出各种状态的TCP连接数量。
脚本:
#!/bin/bash
# 定义cpu函数,用于显示CPU使用率和等待磁盘IO的相应使用率
function cpu(){
# 使用vmstat命令获取CPU的用户态和系统态使用率之和
util=$(vmstat | awk '{if(NR==3)print $13+$14}')
# 使用vmstat命令获取CPU的等待磁盘IO的相应使用率
iowait=$(vmstat | awk '{if(NR==3)print $16}')
# 输出CPU使用率和等待磁盘IO的相应使用率
echo "CPU -使用率:${util}% ,等待磁盘IO相应使用率:${iowait}%"
}
# 定义memory函数,用于显示内存的总大小、已使用量和剩余量
function memory (){
# 使用free命令获取总内存大小(单位转换为G)
total=`free -m |awk '{if(NR==2)printf "%.1f",$2/1024}'`
# 使用free命令获取已使用的内存大小(单位转换为G)
used=`free -m |awk '{if(NR==2) printf "%.1f",($2-$NF)/1024}'`
# 使用free命令获取剩余的内存大小(单位转换为G)
available=`free -m |awk '{if(NR==2) printf "%.1f",$NF/1024}'`
# 输出内存的总大小、已使用量和剩余量
echo "内存 - 总大小: ${total}G , 使用: ${used}G , 剩余: ${available}G"
}
# 定义disk函数,用于显示硬盘的挂载点、总大小、已使用空间和使用率
disk(){
# 使用df命令获取所有硬盘分区的设备名称
fs=$(df -h |awk '/^\/dev/{print $1}')
# 遍历每个硬盘分区
for p in $fs; do
# 使用df命令获取分区的挂载点
mounted=$(df -h |awk '$1=="'$p'"{print $NF}')
# 使用df命令获取分区的总大小
size=$(df -h |awk '$1=="'$p'"{print $2}')
# 使用df命令获取分区已使用的空间
used=$(df -h |awk '$1=="'$p'"{print $3}')
# 使用df命令获取分区的使用率
used_percent=$(df -h |awk '$1=="'$p'"{print $5}')
# 输出分区的挂载点、总大小、已使用空间和使用率
echo "硬盘 - 挂载点: $mounted , 总大小: $size , 使用: $used , 使用率: $used_percent"
done
}
# 定义tcp_status函数,用于显示TCP连接状态
function tcp_status() {
# 使用ss命令获取TCP连接状态,并使用awk进行统计
summary=$(ss -antp |awk '{status[$1]++}END{for(i in status) printf i":"status[i]" "}')
# 输出TCP连接状态统计结果
echo "TCP连接状态 - $summary"
}
# 调用各个函数,显示相关信息
cpu
memory
disk
tcp_status
总结:
这个神奇的脚本将复杂的服务器性能监控变得简单而直观。只需一键运行,你就能获取到服务器的各项关键性能指标,为你的服务器管理提供强大的数据支持。