Подскажите, как реализовать следуещее: есть лог файл, обновляется в реальном времени: /var/log/logfile
Как мне его в риал-тайме пропускать через перловый скрипт, и результат этого фильтрования направлять в другой файл или файлы. Спасибо за помощь.
Ну если прога которая формирует лог твоя, то можно в неё вставить кусок кода который, будет слать юзерский сигнал при изменениии лога, или сама запускать нужный скрипт, или сама фильтровать лог.
Кстати что-то можно придумать с использованием команды tail -f <имя файла>, типа (на Си):
FILE p_tail = popen("tail -f <имя файла>", "r");
Потом читать из него и парсить это дело...
P.S. Может я бред какой прогнал, а?
>Ну если прога которая формирует лог твоя, то можно в неё вставить
>кусок кода который, будет слать юзерский сигнал при изменениии лога, или
>сама запускать нужный скрипт, или сама фильтровать лог.
>Кстати что-то можно придумать с использованием команды tail -f <имя файла>, типа (на Си):
>FILE p_tail = popen("tail -f <имя файла>", "r");
>Потом читать из него и парсить это дело...
>P.S. Может я бред какой прогнал, а?
С tail ты прав. Средствами перла (самое простое):for(;;){
while (<FH>)
{ Тут читаешь файло ;
}
sleep $time; # ну пару секунд.
seek(FH,0,1);
}
use Event::File::tail
>Подскажите, как реализовать следуещее: есть лог файл, обновляется в реальном времени: /var/log/logfile
>
>Как мне его в риал-тайме пропускать через перловый скрипт, и результат этого
>фильтрования направлять в другой файл или файлы. Спасибо за помощь.
Можно сделать проще. В syslog.conf прописать перенаправление этого лога в скрипт. Скриптом из STDIN читать данные, записывать в этот файл и по фильтрам писать в другой файл....