You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux文件系统使用率监控脚本运行未发送告警邮件问题求助

磁盘监控脚本故障排查及修复

前置检查项

  • 先确认系统邮件服务本身可用:执行echo "测试邮件" | mail -s "测试" abc@eee.com,验证是否能正常收到邮件。排查方向包括是否安装mailx/sendmail/postfix组件、对应服务是否启动、服务器25端口是否被封禁。

脚本本身存在的错误

  • 多个收件人格式错误:mail命令的多个收件人需要用空格分隔,你用了分号,分号在Shell中是命令分隔符,会把bbb@eee.com识别为独立命令执行,不会被当成收件人。
  • 变量拼写错误:第二个判断中写的变量是use1,但你实际定义的变量是used1,变量不存在会导致判断条件永远不成立。
  • 逻辑结构嵌套错误:你把第二个if判断直接写在了第一个邮件的EOF分界符之前,这段内容会被当成第一封邮件的正文,第二个判断逻辑完全不会被Shell执行。
  • 语法不完整:第一个mail命令的输入没有对应的EOF结束标记,整体语法结构错误。
  • awk语法不规范:awk {'print $5'}的单引号位置错误,正确写法是awk '{print $5}'。

修正后可用脚本

#!/bin/bash
# 使用率阈值(单位%,无需加百分号)
max=80
# 提取location1使用率,提前去掉百分号
used=$(df -Ph | grep 'location1' | awk '{print $5}' | sed 's/%//g')
# 提取location2使用率,提前去掉百分号
used1=$(df -Ph | grep '/location2' | awk '{print $5}' | sed 's/%//g')

# 监控location1
if [ ${used} -gt ${max} ]; then
mail -s 'Disk space alert' abc@eee.com bbb@eee.com << EOF
The Mount Point "location1" on $(hostname) has used ${used}% at $(date);
EOF
fi

# 监控location2
if [ ${used1} -gt ${max} ]; then
mail -s 'Disk space alert' abc@eee.com bbb@eee.com << EOF
The Mount Point "location2" on $(hostname) has used ${used1}% at $(date);
EOF
fi

内容的提问来源于stack exchange,提问作者Isoboye Bob-manuel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 16:36:05