exigrey.pl
changeset 57 9db6f9fdba12
parent 54 cd04db2a79cc
equal deleted inserted replaced
56:6e6a5c3567f2 57:9db6f9fdba12
    74             my $db = connectDB(\%h, $_);
    74             my $db = connectDB(\%h, $_);
    75             print "# $db\n";
    75             print "# $db\n";
    76             iterate(
    76             iterate(
    77                 %h,
    77                 %h,
    78                 sub {
    78                 sub {
    79                     my ($item, $v0, $v1, $c) = @_;
    79                     my ($item, $v0, $v1, $c, $flag) = @_;
    80                     printf "$item: $v0 $v1 $c (%s %s)\n",
    80                     printf "$item: $v0 $v1 $c (%s %s)%s\n",
    81                       strftime("%FT%T", localtime($v0)),
    81                       strftime("%FT%T", localtime($v0)),
    82                       strftime("%FT%T", localtime($v1));
    82                       strftime("%FT%T", localtime($v1)),
       
    83 		      $flag ? " $flag" : "";
    83                 }
    84                 }
    84             );
    85             );
    85             print "\n" if @ARGV;
    86             print "\n" if @ARGV;
    86         }
    87         }
    87         exit 0;
    88         exit 0;
    90     if ($opt_stats) {
    91     if ($opt_stats) {
    91         foreach (@ARGV = getDBs(@ARGV)) {
    92         foreach (@ARGV = getDBs(@ARGV)) {
    92             my %h;
    93             my %h;
    93             my $db = connectDB(\%h, $_);
    94             my $db = connectDB(\%h, $_);
    94 
    95 
    95             my ($seen, $returned, $oldest_c, $oldest_u);
    96             my ($seen, $returned, $oldest_c, $oldest_u, $auto);
    96             $seen     = $returned = 0;
    97             $seen     = $returned = 0;
    97             $oldest_c = $oldest_u = time();
    98             $oldest_c = $oldest_u = time();
    98             iterate(
    99             iterate(
    99                 %h,
   100                 %h,
   100                 sub {
   101                 sub {
   101                     my ($item, $v0, $v1, $c) = @_;
   102                     my ($item, $v0, $v1, $c, $flags) = @_;
   102                     ++$seen;
   103 		    if ($flags//'' eq 'auto') {
   103                     ++$returned if $v0 != $v1;    # soon it can be $c
   104 			++$auto;
   104                     $oldest_c = $v0 if $v0 < $oldest_c;
   105 			return;
   105                     $oldest_u = $v1 if $v1 < $oldest_u;
   106 		    }
       
   107 		    ++$seen;
       
   108 		    ++$returned if $v0 != $v1;    # soon it can be $c
       
   109 		    $oldest_c = $v0 if $v0 < $oldest_c;
       
   110 		    $oldest_u = $v1 if $v1 < $oldest_u;
       
   111 		    return;
   106                 }
   112                 }
   107             );
   113             );
   108 
   114 
   109             $_ = <<__;
   115             $_ = <<__;
   110 	    date: %s
   116  	     date: %s
   111 	      db: $db (ls: %.1f MB / du: %.1f MB)
   117  	       db: $db (ls: %.1f MB / du: %.1f MB)
   112 	   total: $seen (100%%)
   118  	    total: $seen (100%%)
   113         returned: %*d (%3d%%)
   119          returned: %*d (%3d%%)
   114     not returned: %*d (%3d%%)
   120      not returned: %*d (%3d%%)
   115 oldest (created): %.1f days (%s)
   121 auto white listed: %*d
   116    oldest (used): %.1f days (%s)
   122  oldest (created): %.1f days (%s)
       
   123     oldest (used): %.1f days (%s)
   117 __
   124 __
   118             printf $_, scalar(localtime), (-s $db) / (1024 * 1024),
   125             printf $_, scalar(localtime), (-s $db) / (1024 * 1024),
   119               ((stat $db)[12] * 512) / (1024 * 1024), length($seen), $returned,
   126               ((stat $db)[12] * 512) / (1024 * 1024), 
   120               int(0.5 + 100 * ($returned / $seen)), length($seen),
   127               length($seen), $returned,	int(0.5 + 100 * ($returned / $seen)),                 # returned
   121               $seen - $returned, int(0.5 + 100 * ($seen - $returned) / $seen),
   128               length($seen), $seen - $returned, int(0.5 + 100 * ($seen - $returned) / $seen), # not returned
       
   129 	      length($seen), $auto,							      # auto white
   122               ((time - $oldest_c) / 86400), scalar(localtime $oldest_c),
   130               ((time - $oldest_c) / 86400), scalar(localtime $oldest_c),
   123               ((time - $oldest_u) / 86400), scalar(localtime $oldest_u);
   131               ((time - $oldest_u) / 86400), scalar(localtime $oldest_u);
   124             print "\n" if @ARGV;
   132             print "\n" if @ARGV;
   125 
   133 
   126         }
   134         }
   175 	connectDB(\my %h, $db);
   183 	connectDB(\my %h, $db);
   176 	if (not exists $h{$key}) {
   184 	if (not exists $h{$key}) {
   177 	    warn "$0: not found\n";
   185 	    warn "$0: not found\n";
   178 	}
   186 	}
   179 	else {
   187 	else {
   180 	    $_ = delete $h{$key};
   188 	    $_ = $h{$key};
   181 	    s/\0$/\n/;
   189 	    s/\0$/\n/;
       
   190 	    delete $h{$key};
   182 	    print;
   191 	    print;
   183 	}
   192 	}
   184 	exit 0;
   193 	exit 0;
   185     }
   194     }
   186 }
   195 }
   189     grep { !/\.lock$/ } grep { -f -s }
   198     grep { !/\.lock$/ } grep { -f -s }
   190       map { m(^\.?/) ? glob($_) : glob(getDBDir() . "/$_") } @_ ? @_ : "*";
   199       map { m(^\.?/) ? glob($_) : glob(getDBDir() . "/$_") } @_ ? @_ : "*";
   191 }
   200 }
   192 
   201 
   193 # Helper to iterate over our hash and call the passed
   202 # Helper to iterate over our hash and call the passed
   194 # "callback" function (item, v0, v1, count)
   203 # "callback" function (item, v0, v1, count, flags)
   195 sub iterate(\%$) {
   204 sub iterate(\%$) {
   196     my ($hash, $sub) = @_;
   205     my ($hash, $sub) = @_;
   197     while (my ($k, $v) = each %$hash) {
   206     while (my ($k, $v) = each %$hash) {
   198         chop($k, $v);
   207         chop($k, $v);
   199         &$sub($k, (split(" ", $v), 0)[ 0 .. 2 ]);    # 0 for filling
   208         &$sub($k, (split(' ', $v), 0, 0)[ 0 .. 3 ]);    # 0 for filling
   200     }
   209     }
   201 }
   210 }
   202 
   211 
   203 # vim:ft=perl aw sts=4 sw=4:
   212 # vim:ft=perl aw sts=4 sw=4: