Читалка логов

Софт под Linux, разные программы, но только связанные с Linux

Модератор: /dev/random

gOsToFf
Сообщения: 95
ОС: CentOS 5.7 x86-64

Читалка логов

Сообщение gOsToFf »

Суть в том что нужна такая вещь как tail -f которая будет читать лог файл и все новое выплевывать в скрипт. Кто может что посоветовать?
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Читалка логов

Сообщение serzh-z »

gOsToFf писал(а):
06.02.2012 17:01
Кто может что посоветовать?
Ммм... Точно такое же, но другое?
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Читалка логов

Сообщение drBatty »

gOsToFf писал(а):
06.02.2012 17:01
Суть в том что нужна такая вещь как tail -f которая будет читать лог файл и все новое выплевывать в скрипт. Кто может что посоветовать?

какие у вас проблемы с tail -f ?
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
gOsToFf
Сообщения: 95
ОС: CentOS 5.7 x86-64

Re: Читалка логов

Сообщение gOsToFf »

Проблемы с тем что я не знею как из него сделать демон постоянно передающий данные в скрипт... при это скрипт демоном не должен быть... Тоетьс


tail -f log1.log | log_parse.php
отрабатывает лишь раз.. А надо чтобы постоянно...
А
tail -f log1.log > log_parse.php

будет держать скрипт и тот не сможет отработать......
Спасибо сказали:
BIgAndy
Сообщения: 1923

Re: Читалка логов

Сообщение BIgAndy »

PIPES?
Именованные каналым (FIFO)?

gOsToFf писал(а):
06.02.2012 22:22
tail -f log1.log > log_parse.php

будет держать скрипт и тот не сможет отработать......

Эта команда будет перезапистывать скрипт log_parse.php И ничего более.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Читалка логов

Сообщение drBatty »

gOsToFf писал(а):
06.02.2012 22:22
будет держать скрипт и тот не сможет отработать......

вот как это надо делать:

Код: Выделить всё

#!/bin/bash

(
    tail -f zzz >x.log &
)

беда в том, что при завершении скрипта он завершает все свои потомки, в т.ч. и tail, потому без скобок отвязать его не получится. (точнее получится, если этот скрипт никогда не кончается). Я её(tail) засунул в subshell. Потому она продолжает выполняться. В качестве "лога" я использовал FIFO, ибо вывод идёт большими порциями, а совсем не по одной строчке.

gOsToFf писал(а):
06.02.2012 22:22
tail -f log1.log | log_parse.php
отрабатывает лишь раз.. А надо чтобы постоянно...

она и отрабатывает постоянно вообще-то. Но никто не гарантировал, что пайп будет у вас работать построчно. Эта палка - это такой особый файл pipe(труба), который не имеет имени, но зато приколочен к stdout tail на запись, и к stdin вашего скрипта на чтение. А чем, кстати, вы там читаете? В php вообще есть функции чтения? (никогда не знал просто. Впрочем можно ведь юзать fread("/dev/stdout") наверное)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
gOsToFf
Сообщения: 95
ОС: CentOS 5.7 x86-64

Re: Читалка логов

Сообщение gOsToFf »

Код: Выделить всё

!#/bin/php
<?php

echo $ARGV[0];

?>


drBatty писал(а):
07.02.2012 00:11
беда в том, что при завершении скрипта он завершает все свои потомки, в т.ч. и tail, потому без скобок отвязать его не получится. (точнее получится, если этот скрипт никогда не кончается). Я её(tail) засунул в subshell. Потому она продолжает выполняться. В качестве "лога" я использовал FIFO, ибо вывод идёт большими порциями, а совсем не по одной строчке.

Я если честно так и не понял как прикрутить стек фифо к этому.......

И мне совсем не имеет значения по одной строчке он идет или нет.... Скриптово я расчленю вход под \n и обработаю как надо мне.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Читалка логов

Сообщение drBatty »

gOsToFf писал(а):
07.02.2012 11:40
Я если честно так и не понял как прикрутить стек фифо к этому.......

в рамках этой задачи вам это и не нужно.
gOsToFf писал(а):
07.02.2012 11:40
И мне совсем не имеет значения по одной строчке он идет или нет.... Скриптово я расчленю вход под \n и обработаю как надо мне.

код выше рабочий.

gOsToFf писал(а):
07.02.2012 11:40
И мне совсем не имеет значения

например в логе пишется

Код: Выделить всё

WARNING!!!! Случилось СТРАШНОЕ!!!111

недостаток предыдущего кода в том, что этот warning загрузится в буфер, и обработается неизвестно когда (когда этот буфер заполнится, если вообще заполнится).
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: