0

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 時間ごとに実行する場合、元のログ ファイルをすべて何度も処理することです。元のログ ファイルに「ブックマーク」を挿入して、このスクリプトに最後のログ ファイルを検索し、そこから続行するように指示することはできますか? または、これはどのように行うべきですか?

4

2 に答える 2

2

中断した行番号を含むステータス ファイルを書き出します。処理を再開したい場合は、まずステータスファイルを読み込んで行数をスキップしてください。

于 2013-07-12T07:31:37.187 に答える