sub rotate_logs {
my @files = target_files_by_date_in_dir( ... );
my $cent = size_in_percentage( \@files );
print "# size_in_percentage is $cent\n";
while( $cent > 80 ){
my @ten = splice @files, 0, 10;
## should be path()s already but just in case
for my $file ( @ten ){
print "# removing oldest $file\n";
path( $file )->remove;
}
$cent = size_in_percentage( @files );
}
print "# size_in_percentage is $cent\n";
}
sub target_files_by_date_in_dir {
use Path::Tiny;
map { $$_[0] }
sort { $$b[1] <=> $$a[1] }
map { [ $_, $_->stat->mtime ] }
map { path( $_ )->children }
@_
}
sub size_in_percentage {
use Capture::Tiny;
my( $files ) = @_;
my ($du_stdout, $du_stderr, $df_exit) = capture {
system( 'du', ..., @$files );
};
my ($df_stdout, $df_stderr, $df_exit) = capture {
system( 'df', ... );
};
... # math
return $size;
}
|