Linux でログ ファイルを処理する perl スクリプトを作成したいと考えています。アイデアは、「興味深い」行を他の行からソートすることです。私の計画は次のとおりです: - ログファイルの一時コピーを作成します (常に書き込まれるため) - 「興味深い」行 (キーワード) を検索します - それらを別のファイル「log.processed」にコピーします - そのファイルを e 経由で送信します-私にメールしてください。(この部分は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";
判断しないでください、私は初心者です。問題は、たとえばこのスクリプトを 1 時間ごとに実行する場合、元のログ ファイルをすべて何度も処理することです。元のログ ファイルに「ブックマーク」を挿入して、このスクリプトに最後のログ ファイルを検索し、そこから続行するように指示することはできますか? または、これはどのように行うべきですか?