大致计算服务器磁盘使用情况脚本
#!/bin/bash
# 计算所有物理磁盘的总大小(单位:字节)
disk_size_bytes=$(lsblk -b -d -o SIZE 2>/dev/null | awk '{sum += $1} END {print sum}')
# 转换字节为GB(1 GB = 1024^3 字节)
disk_size_gb=$(awk -v bytes=$disk_size_bytes 'BEGIN {printf "%.2f", bytes / (1024^3)}')
# 计算所有以/dev开头的挂载设备的使用空间总和(单位:KB)
used_kb=$(df -kP | awk '$1 ~ /^\/dev\// {sum += $3} END {print sum}')
# 转换KB为GB
used_gb=$(awk -v kb=$used_kb 'BEGIN {printf "%.2f", kb / 1048576}')
# 获取NFS文件系统的信息(总大小和已使用量)
nfs_info=$(df -kT 2>/dev/null | awk '$2 ~ /^nfs/ || $2 ~ /^nfs4/ {total += $3; used += $4} END {print total, used}')
# 解析NFS信息
nfs_total_kb=$(echo $nfs_info | awk '{print $1}')
nfs_used_kb=$(echo $nfs_info | awk '{print $2}')
# 设置默认值(如果没有NFS挂载)
nfs_total_kb=${nfs_total_kb:-0}
nfs_used_kb=${nfs_used_kb:-0}
# 转换NFS容量为GB
nfs_total_gb=$(awk -v kb=$nfs_total_kb 'BEGIN {printf "%.2f", kb / 1048576}')
nfs_used_gb=$(awk -v kb=$nfs_used_kb 'BEGIN {printf "%.2f", kb / 1048576}')
# 计算NFS使用率(避免除以零)
if [ "$nfs_total_kb" -gt 0 ]; then
nfs_usage_percent=$(awk -v used=$nfs_used_kb -v total=$nfs_total_kb 'BEGIN {printf "%.1f", (used/total)*100}')
else
nfs_usage_percent="0.0"
fi
# 输出结果
echo "物理磁盘总大小: $disk_size_bytes 字节 ($disk_size_gb GB)"
echo "本地挂载设备使用空间总和: ${used_kb} KB ($used_gb GB)"
echo "NFS文件系统统计:"
echo " 总容量: ${nfs_total_kb} KB ($nfs_total_gb GB)"
echo " 已使用: ${nfs_used_kb} KB ($nfs_used_gb GB)"
echo " 使用率: ${nfs_usage_percent}%"