There is a nice perl system routine called Perl df or Filesys::DiskSpace.
This routine displays information on a file system such as its type,
the amount of disk space occupied, the total disk space and the number
of inodes etc.
Command :
Task: Install Filesys::DiskSpace
First you need to install this perl module using apt-get or from cpan (Comprehensive Perl Archive Network).Command :
sudo apt-get install libfilesys-diskspace-perlPerl script code to monitor disk space and send an email alert.
#!/usr/bin/perl
# Available under BSD License.
use strict;
use warnings;
use Filesys::DiskSpace;
# file system to monitor
my $dir = "/home";
# warning level
my $warning_level=10;
# email setup
my $to='admin@yourdomain.com';
my $from='webmaster@YOURDOMAIN.COM';
my $subject='Low Disk Space';
# get df
my ($fs_type, $fs_desc, $used, $avail, $fused, $favail) = df $dir;
# calculate
my $df_free = (($avail) / ($avail+$used)) * 100.0;
# compare
if ($df_free < $warning_level) {
my $out = sprintf("WARNING Low Disk Space on $dir : %0.2f%% ()\n",$df_free);
# send email using UNIX/Linux sendmail
open(MAIL, "|/usr/sbin/sendmail -t");
## Mail Header
print MAIL "To: $to\n";
print MAIL "From: $from\n";
print MAIL "Subject: $subject\n";
## Mail Body
print MAIL $out;
close(MAIL);
}