Bash监视磁盘使用情况

我买了一个有debian的debian的NAS盒子。

前些天空间不足,我没有意识到。 我基本上想编写一个bash脚本,当磁盘达到90%以上时会提醒我。

有谁知道脚本会做到这一点,或给我一些build议,写一个?

Solutions Collecting From Web of "Bash监视磁盘使用情况"

#!/bin/bash source /etc/profile # Device to check devname="/dev/sdb1" let p=`df -k $devname | grep -v ^File | awk '{printf ("%i",$3*100 / $2); }'` if [ $p -ge 90 ] then df -h $devname | mail -s "Low on space" my@email.com fi 

Crontab这个来运行,但是经常需要一个警报

编辑:对于多个磁盘

 #!/bin/bash source /etc/profile # Devices to check devnames="/dev/sdb1 /dev/sda1" for devname in $devnames do let p=`df -k $devname | grep -v ^File | awk '{printf ("%i",$3*100 / $2); }'` if [ $p -ge 90 ] then df -h $devname | mail -s "$devname is low on space" my@email.com fi done 

我尝试使用Erik的答案,但有长名称的装置包装的数字,导致脚本失败的问题,也算数看我错了,不符合由df本身报告的百分比。

这是他的脚本更新:

 #!/bin/bash source /etc/profile # Devices to check devnames="/dev/sda1 /dev/md1 /dev/mapper/vg1-mysqldisk1 /dev/mapper/vg4-ctsshare1 /dev/mapper/vg2-jbossdisk1 /dev/mapper/vg5-ctsarchive1 /dev/mapper/vg3-muledisk1" for devname in $devnames do let p=`df -Pk $devname | grep -v ^File | awk '{printf ("%i", $5) }'` if [ $p -ge 70 ] then df -h $devname | mail -s "$devname is low on space" my@email.com fi done 

关键更改将df -k更改为df -Pk以避免行换行,并简化awk以使用预计算百分比而不是重新计算。

你也可以用Monit来做这种工作。 这是一个“免费的开源工具,用于在UNIX系统上管理和监控进程,程序,文件,目录和文件系统”。