了解服务器的实时性能数据
性能数据及获取方式介绍
1. CPU使用率
2. 内存使用率和内存情况
3. 磁盘分区及磁盘IO
4. 磁盘空间使用率
5. 网口带宽
6. CPU和内存使用前五的进程
代码实现
# 检查命令是否存在
command_exists() {
command -v "$@" >/dev/null 2>&1
}
# 打印高亮的标题
print_title() {
echo -e "\033[32m"
echo -e "\n=========================================="
echo "$1"
echo "=========================================="
echo -e "\033[0m" # 重置颜色
}
# 获取CPU使用率
cpu_usage() {
print_title "CPU Usage"
if command_exists top; then
top -bn1 | grep "Cpu(s)" | awk '{print "User: " $2 "%, System: " $4 "%, Idle: " $6 "%, IOWait: " $5 "%"}'
else
echo "Error: top command not found."
exit 1
fi
}
# 获取内存使用率和内存情况
memory_usage() {
print_title "Memory Usage"
if command_exists free; then
free -m | awk 'NR==2{printf "Total: %sM, Used: %sM (%.2f%%), Free: %sM, Cache: %sM\n", $2, $3, $3*100/$2, $4, $6}'
else
echo "Error: free command not found."
exit 1
fi
}
# 获取磁盘分区及磁盘IO
disk_partitions() {
print_title "Disk Partitions"
if command_exists df; then
df -h
else
echo "Error: df command not found."
exit 1
fi
}
# 获取磁盘空间使用率
disk_io() {
print_title "Disk IO"
if command_exists iostat; then
iostat -x 1 3
else
echo "Error: iostat command not found. Please install sysstat package."
exit 1
fi
}
# 获取网口带宽
network_bandwidth() {
print_title "Network Bandwidth"
if command_exists ifconfig; then
ifconfig
elif command_exists ip; then
ip addr show
else
echo "Error: No network interface statistics tool found."
exit 1
fi
}
# 获取CPU和内存使用前五的进程
top_processes() {
print_title "Top 5 CPU and Memory Processes"
if command_exists ps; then
ps aux --sort=-%cpu | head -5
ps aux --sort=-%mem | head -5
else
echo "Error: ps command not found."
exit 1
fi
}
# 记录时间点
record_time() {
echo -e "\033[34mTime of report: $(date '+%Y-%m-%d %H:%M:%S')\033[0m" # 蓝色高亮
}
# 主函数,调用所有性能监控函数
main() {
record_time
cpu_usage
memory_usage
disk_partitions
disk_io
network_bandwidth
top_processes
}
# 调用主函数
main
Shell能力介绍
检查命令是否存在:在执行每个监控功能之前,脚本会检查所需的命令是否已安装,确保脚本的鲁棒性。
打印高亮标题:为了增强可读性,脚本使用彩色输出打印每个功能的标题,使得输出结果更清晰易懂。
CPU使用率:通过调用top命令,脚本能够展示CPU的使用情况,包括用户、系统、空闲和IO等待的百分比。
内存使用情况:使用free命令获取内存的总量、已用量、空闲量和缓存信息,并以百分比形式展示已用内存的比例。
磁盘分区信息:通过df命令,脚本显示当前系统的磁盘分区及其使用情况,便于用户了解磁盘空间的分配。
磁盘IO:利用iostat命令,脚本提供磁盘的输入输出统计信息,帮助用户监测磁盘性能。
网络带宽:脚本通过ifconfig或ip命令获取网络接口的带宽信息,便于了解网络的使用情况。
CPU和内存使用前五的进程:使用ps命令,脚本能够列出当前系统中占用CPU和内存资源最多的五个进程,帮助用户识别资源占用的“罪魁祸首”。
记录时间点:脚本在开始时会记录并打印报告生成的时间,方便用户进行时间上的跟踪。
运行脚本:
bash monitor.sh
注意事项:
确保你有适当的权限来执行脚本,并且根据需要安装了所有必需的命令行工具。
iostat
命令需要sysstat
包支持,如果系统中没有安装,可以通过包管理器安装。nethogs
和ntop
提供了更详细的网络流量监控,但它们不是标准工具,可能需要单独安装。脚本中的
exit 1
确保了如果关键命令不存在,脚本会立即停止执行并报错。