因此,我正在考虑为我的家庭服务器添加硬盘空间不足警告。我喜欢下面的外观,它来自这里:
ADMIN="[email protected]"
# set alert-level 90 % standard
ALERT=10
df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $6 }' | while read output;
do
usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1 )
partition=$(echo $output | awk '{ print $2 }' )
if [ $usep -ge $ALERT ]; then
echo "space low on \"$partition ($usep%)\", on server $(hostname) at $(date)" |
mail -s "Alert: Free space low, $usep % used on $partition" $ADMIN
fi
done
我认为在实际运行任何脚本之前,最好先理解它,因此我一直在查看手册页,以了解程序的每个部分是如何工作的,这似乎相当简单。我唯一不明白的是条件语句-ge
中的标志if
。根据 bashif 页面介绍如果“文件存在”,则这两个都将求值为真。当我比较两个变量时,此逻辑如何通过。在其他编程语言中,我会使用==
语法。同样,为什么我们要将 的值90
(由 df 报告)与10
的变量进行比较ALERT
,我认为这与条件求值的方式有关?我没有理由相信此代码不起作用,我只是想知道在将其添加到脚本之前为什么会这样。
谢谢。