目录
磁盘空间监控与告警
描述:分析df命令输出,对使用率超过80%的分区发出告警。
测试数据:
保存为 df_output.txt
bash
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 20480000 6144000 14336000 30% /
/dev/sda2 51200000 38912000 12288000 76% /home
/dev/sda3 30720000 21504000 9216000 70% /var
/dev/sdb1 10240000 7680000 2560000 75% /data
tmpfs 2048000 102400 1945600 5% /run
/dev/sdc1 40960000 28672000 12288000 70% /backup
自动化脚本内容
保存为testDf文件
bash
#!/bin/bash
echo "=== 磁盘空间监控与告警 ==="
echo "正在检查磁盘使用率超过80%的分区..."
echo
# 阈值设置为80%
threshold=80
# 使用awk处理df输出
echo "检查结果:"
echo "文件系统 使用率 挂载点 状态"
echo "----------------------------------------"
#也可以写df -h查本机的使用情况
cat df_output.txt | awk -v thresh = "$thresholt" '
NR==1 {next} #跳过第一行
{
#提取使用百分比%
use_percent=substr($5,1,length($5)-1)
#如果使用率超过阈值
if(use_percent + 0 > thresh){
# 设置告警标志和颜色(在终端中显示红色)
status = "⚠️ 警告"
printf "\033[31m%-15s %-6s %-12s %-10s\033[0m\n", $1, $5, $6, status
alarm=1
}else {
status = "✓ 正常"
printf "%-15s %-6s %-12s %-10s\n", $1, $5, $6, status
}
END {
if(alarm){
print "\n\033[31m发现磁盘使用率超过" thresh "%的分区,请及时清理!\033[0m"
}else{
print "\n\033[32m所有磁盘分区使用率正常。\033[0m"
}
}
}
注:确保脚本文件和testDf在同一目录,如果不在确保在脚本内程序能选中目标测试文件