同じようなことやってる人がいたからオレも書いた。
#!/usr/bin/perl
use utf8;
use Cache::Memcached;
use POSIX q/strftime/;
unless ($ARGV[0]){
print "usage:memd {address:port}";
exit 1;
}
my $hosts = $ARGV[0];
my $cache = Cache::Memcached->new({
servers => [$hosts],
}) or die("connection failed.");
my $slabs = $cache->stats('slabs');
my %slabs;
map{
$slabs{$1} = $2 if $_ =~ /STAT ([0-9]+):used_chunks ([0-9]+)/
} split "\n" , $slabs->{hosts}->{$hosts}->{slabs};
foreach (keys %slabs){
my $cmd = "cachedump $_ ".$slabs{$_};
my $dump = $cache->stats($cmd);
foreach ( split "\n",$dump->{hosts}->{$hosts}->{$cmd}){
if($_ =~ /ITEM (.+) \[(.*) b; (.*) /){
print "$1 ","$2Byte ", "expire ".strftime("%Y/%m/%d %H:%M:%S",localtime($3)), "\n"
if time < $3;
};
}
}
1;
0 件のコメント:
コメントを投稿