/usr/share/perl5/Sys/Statistics/Linux/DiskUsage.pm is in libsys-statistics-linux-perl 0.66-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 | =head1 NAME
Sys::Statistics::Linux::DiskUsage - Collect linux disk usage.
=head1 SYNOPSIS
use Sys::Statistics::Linux::DiskUsage;
my $lxs = new Sys::Statistics::Linux::DiskUsage;
my $stat = $lxs->get;
=head1 DESCRIPTION
Sys::Statistics::Linux::DiskUsage gathers the disk usage with the command C<df>.
For more information read the documentation of the front-end module L<Sys::Statistics::Linux>.
=head1 DISK USAGE INFORMATIONS
Generated by F</bin/df -kP>.
total - The total size of the disk.
usage - The used disk space in kilobytes.
free - The free disk space in kilobytes.
usageper - The used disk space in percent.
mountpoint - The moint point of the disk.
=head2 GLOBAL VARS
If you want to change the path or arguments for C<df> you can use the following
variables...
$Sys::Statistics::Linux::DiskUsage::DF_PATH = '/bin';
$Sys::Statistics::Linux::DiskUsage::DF_CMD = 'df -akP';
Example:
use Sys::Statistics::Linux;
use Sys::Statistics::Linux::DiskUsage;
$Sys::Statistics::Linux::DiskUsage::DF_CMD = 'df -akP';
my $sys = Sys::Statistics::Linux->new(diskusage => 1);
my $disk = $sys->get;
=head1 METHODS
=head2 new()
Call C<new()> to create a new object.
my $lxs = Sys::Statistics::Linux::DiskUsage->new;
It's possible to set the path to df.
Sys::Statistics::Linux::DiskUsage->new(
cmd => {
# This is the default
path => '/bin',
df => 'df -kP 2>/dev/null',
}
);
=head2 get()
Call C<get()> to get the statistics. C<get()> returns the statistics as a hash reference.
my $stat = $lxs->get;
=head1 EXPORTS
No exports.
=head1 SEE ALSO
B<df(1)>
=head1 REPORTING BUGS
Please report all bugs to <jschulz.cpan(at)bloonix.de>.
=head1 AUTHOR
Jonny Schulz <jschulz.cpan(at)bloonix.de>.
=head1 COPYRIGHT
Copyright (c) 2006, 2007 by Jonny Schulz. All rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
=cut
package Sys::Statistics::Linux::DiskUsage;
use strict;
use warnings;
use Carp qw(croak);
our $VERSION = '0.14';
our $DF_PATH = undef;
our $DF_CMD = undef;
sub new {
my $class = shift;
my $opts = ref($_[0]) ? shift : {@_};
my %self = (
cmd => {
path => '/bin',
df => 'df -kP 2>/dev/null',
}
);
foreach my $p (keys %{ $opts->{cmd} }) {
$self{cmd}{$p} = $opts->{cmd}->{$p};
}
return bless \%self, $class;
}
sub get {
my $self = shift;
my $class = ref $self;
my $cmd = $self->{cmd};
my $df_cmd = $DF_CMD || $cmd->{df};
my (%disk_usage);
local $ENV{PATH} = $DF_PATH || $cmd->{path};
open my $fh, "$df_cmd|" or croak "$class: unable to execute '$df_cmd' ($!)";
# filter the header
{my $null = <$fh>;}
while (my $line = <$fh>) {
next unless $line =~ /^(.+?)\s+(.+)$/;
@{$disk_usage{$1}}{qw(
total
usage
free
usageper
mountpoint
)} = (split /\s+/, $2)[0..4];
$disk_usage{$1}{usageper} =~ s/%//;
}
close($fh);
return \%disk_usage;
}
1;
|