我有下面的基本命令,但如果磁盘使用率不超过 90%,我不需要电子邮件 - 可能是某种类型的 else if 语句。
df -Ph | sed s/%//g | awk '{ if($5 > 90) print $0;}' | mail -s Disk Space Alert On $(hostname) [email protected]
答案1
我能够接受你的命令并将其拼凑在一起:
df -Ph | awk 'int($5) > 90 {print $0; rc=1}; END {exit rc}' || mail -s "Disk Space Alert On $(hostname)" [email protected]
我摆脱了,sed
因为它不应该被需要awk
。在awk
声明中,如果发现任何列出的分区超过 90%,我将设置一个非零返回代码,然后仅在返回非零时发送电子邮件。
我能想到的唯一警告是,awk
可能会因错误而失败,但您仍然会收到一封电子邮件,但也许这是理想的通知。
答案2
像这样的事情可能会起作用:
if [ $(LC_ALL=C df / | tail -1 | cut -d% -f1 | cut -d' ' -f12) -gt 90 ]; then echo mail -s "Disk Space Alert On $(hostname)" [email protected]; fi
df
根据区域设置给出不同的输出,这就是为什么我在它前面加上前缀LC_ALL=C
.替代方案C
是POSIX
,en_US.UTF-8
或为您的系统配置的其他区域设置。- 将
/
in替换df /
为要检查的分区安装位置的路径。 -gt
是一个代表“大于”的标志。