in reply to Re: Rotate log files based upon disk percentage full?
in thread Rotate log files based upon disk percentage full?
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; }
|
|---|