我想创建一个处理linux中日志文件的perl脚本。想法是对其他人的“有趣”线进行排序。我的计划是这样的: - 制作日志文件的临时副本(因为它经常被写入) - 搜索“有趣”行(关键字) - 将它们复制到另一个文件“log.processed” - 通过电子邮件将该文件发送给我。 (我认为这部分将由cron完成)
直到现在我有了这个:
#!/usr/bin/perl
#use strict;
use warnings;
use File::Copy;
copy("/home/hq-asa.log","/home/hq-asa.temp") or die "Copy failed $!";
$NewLog = "/home/hq-asa.processed";
our $search = "keyword1|keyword2|";
my $TempLog = "/home/hq-asa.temp";
open (my $LogFile, "+<", $TempLog) or die "Could not open log temp file $!";
qx(touch $NewLog);
open ($newlog, "+<", $NewLog) or die "could not open new log file $!";
foreach $line (<$LogFile>) {
if (($line =~ m/$search/) or ($line eq $search)) {
print $newlog $line;
}
}
close($LogFile);
close($newlog);
unlink "/home/hq-asa.temp";
不要判断,我是新手。 问题是,如果我希望每小时运行一次该脚本,例如它将一次又一次地处理所有原始日志文件。我可以在原始日志文件中加入“书签”并告诉此脚本搜索最后一个并从那里继续吗?或者应该怎么做?