Linux:尝试监控不同的 linux 文件系统大小并将邮件发送给 2 人或更多人
Posted
技术标签:
【中文标题】Linux:尝试监控不同的 linux 文件系统大小并将邮件发送给 2 人或更多人【英文标题】:Linux: Trying to monitor different linux filesystem sizes and send mail to 2 or more people 【发布时间】:2021-11-22 13:25:06 【问题描述】:我创建了一个 .sh 文件来监控 2 个文件路径并将磁盘大小发送给我。它运行,我没有收到邮件。文件系统>90%
#!/bin/bash
used=$(df -Ph | grep 'location1' | awk 'print $5')
used1=$(df -Ph | grep '/location2' | awk 'print $5')
max=80%
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);
if [ $use1%? -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
【问题讨论】:
如果你给出mail
的完整路径会发生什么?
您的第一个 if
缺少 EOF
和 fi
。你的第二个if
使用了一个未定义的变量use1
您确定您的grep
调用每个都只返回一个结果吗?如果不是,-gt
会出现语法错误
It runs and I don't get a mail
sooo,你配置你的电脑发送邮件了吗?
@jhnc:是的,谢谢,我错过了。
【参考方案1】:
谢谢大家,我已经弄明白了。
#!/bin/bash
used=$(df -Ph | grep 'location1' | awk 'print $5' | sed 's/%//g' )
used1=$(df -Ph | grep 'location2' | awk 'print $5' | sed 's/%//g' )
max=80%
if [ $used%? -gt $max%? ]; then
if [ $use1%? -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
fi
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。【参考方案2】:您未能包含EOF
标记,因此其余代码隐藏在此处的文档中。 (您问题中的语法着色应该可以帮助您注意。)
顺便说一句,你想避免useless grep
并修复你的缩进。我也猜你不希望第二个 if
仅在第一个触发时触发。
#!/bin/bash
used=$(df -Ph | awk '/location1/ print $5')
used1=$(df -Ph | awk '/\/location2/ print $5')
max=80%
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
if [ $use1%? -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
代码重复较少的更惯用的解决方案将循环参数。
#!/bin/bash
max=80
for mountpoint in location /location2; do
used=$(df -Ph "$mountpoint" | awk 'NR>1 print $5')
if [ $used%? -gt $max ]; then
mail -s 'Disk space alert' abc@eee.com;bbb@eee.com <<____EOF
The Mount Point "$mountpoint" on $(hostname) has used $used at $(date);
____EOF
fi
done
【讨论】:
以上是关于Linux:尝试监控不同的 linux 文件系统大小并将邮件发送给 2 人或更多人的主要内容,如果未能解决你的问题,请参考以下文章