在一个脚本中,我们需要想出一种使磁盘空间监控更加智能的方法。在较小的文件系统上,我们仍然希望在 90% 已满时发出警报,但在较大的文件系统上,我们应该仅在只有几 GB 可用空间时发出警报。
有人可以解释一下吗?
答案1
有多个选项,但您需要根据您的要求修改以下脚本。
#!/usr/bin/awk -f
BEGIN{
ADMIN="root@localhost"
threshold=20
"date" | getline date
"uname -n" | getline hostname
while("LC_ALL=C df -Ph" | getline){
used=$5
if($1 != "Filesystem" && int(used) >= threshold){
print "Running out of space: "$1,used" used on "hostname" as on: "date
print "mail -s \"Alert: Almost out of disk space: " $1,used" used\" "ADMIN" >/dev/null" | "sh"
close("sh");
}
}
}
您可以参考以下链接 http://www.cyberciti.biz/tips/shell-script-to-watch-the-disk-space.html
http://www.linuxjournal.com/content/tech-tip-send-email-alert-when-your-disk-space-gets-low
答案2
您可以(ab)使用 Nagios 插件check_disk
来实现此目的。优点是这个软件是轻量级的,经过充分测试,并且可能已经由您的包管理器提供(Debian/Ubuntu 包nagios-plugins-basic
)。用法示例:
check_disk -w 10% -c 3 -u GB -p / -p /mnt
在此示例中,它检查两个连接点/
和/mnt
。如果退出时的退出状态为 2,则磁盘的可用空间少于 3GB;如果退出时的状态为 1,则磁盘的可用空间少于 10%;如果退出时的状态为 0,则这两个值都未达到。检查 Bash 中的退出状态很简单,即$?
.