【发布时间】:2021-05-12 08:07:04
【问题描述】:
我使用“https://exchange.nagios.org/directory/Plugins/Operating-Systems/Linux/Check-Newest-files-age-and-size-in-Diredtory/”中的以下 perl 脚本 但在这些脚本中是一个错误。该脚本未显示最新文件。有人能找出错误吗?在该站点的 cmets 中有人写过,第 22 行中的错误是。我找不到它: 代码如下:
# Check that file exists (can be directory or link)
unless (-d $opt_f) {
print "FILE_AGE CRITICAL: Folder not found - $opt_f\n";
exit $ERRORS{'CRITICAL'};
}
my $list = opendir DIRHANDLE, $opt_f or die "Cant open directory: $!";
while ($_ = readdir(DIRHANDLE))
{
$file=sprintf("%s/%s",$opt_f,$_);
$attrs = stat("$file");
$diff = time()-$attrs->mtime;
if($temp == 0)
{
#$temp=$diff;
$new=$file;
}
if($_ ne "." && $_ ne "..")
{
if($diff<$temp)
{
$temp=$diff;
$new=$_;
}
else
{
$temp=$diff; $new=$_;
}
}
}
$st = File::stat::stat($opt_f."/".$new);
$age = time - $st->mtime;
$size = $st->size;
示例: 我在文件管理器上有一些文件(.img 文件中的备份)。我使用这个脚本来检查最新的文件大小。如果我使用新文件创建一个新文件夹,则检查会查找正确的文件。但是如果我创建第二个文件,检查会随时查看旧文件。如果我创建第三个文件,检查将转到正确的文件。第四个文件错了,第五个文件又对了(以此类推)
【问题讨论】: