Читалка логов
Модератор: /dev/random
-
gOsToFf
- Сообщения: 95
- ОС: CentOS 5.7 x86-64
Читалка логов
Суть в том что нужна такая вещь как tail -f которая будет читать лог файл и все новое выплевывать в скрипт. Кто может что посоветовать?
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Читалка логов
какие у вас проблемы с tail -f ?
-
gOsToFf
- Сообщения: 95
- ОС: CentOS 5.7 x86-64
Re: Читалка логов
Проблемы с тем что я не знею как из него сделать демон постоянно передающий данные в скрипт... при это скрипт демоном не должен быть... Тоетьс
tail -f log1.log | log_parse.php
отрабатывает лишь раз.. А надо чтобы постоянно...
А
tail -f log1.log > log_parse.php
будет держать скрипт и тот не сможет отработать......
tail -f log1.log | log_parse.php
отрабатывает лишь раз.. А надо чтобы постоянно...
А
tail -f log1.log > log_parse.php
будет держать скрипт и тот не сможет отработать......
-
BIgAndy
- Сообщения: 1923
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Читалка логов
вот как это надо делать:
Код: Выделить всё
#!/bin/bash
(
tail -f zzz >x.log &
)беда в том, что при завершении скрипта он завершает все свои потомки, в т.ч. и tail, потому без скобок отвязать его не получится. (точнее получится, если этот скрипт никогда не кончается). Я её(tail) засунул в subshell. Потому она продолжает выполняться. В качестве "лога" я использовал FIFO, ибо вывод идёт большими порциями, а совсем не по одной строчке.
она и отрабатывает постоянно вообще-то. Но никто не гарантировал, что пайп будет у вас работать построчно. Эта палка - это такой особый файл pipe(труба), который не имеет имени, но зато приколочен к stdout tail на запись, и к stdin вашего скрипта на чтение. А чем, кстати, вы там читаете? В php вообще есть функции чтения? (никогда не знал просто. Впрочем можно ведь юзать fread("/dev/stdout") наверное)
-
gOsToFf
- Сообщения: 95
- ОС: CentOS 5.7 x86-64
Re: Читалка логов
Код: Выделить всё
!#/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: Читалка логов
в рамках этой задачи вам это и не нужно.
код выше рабочий.
например в логе пишется
Код: Выделить всё
WARNING!!!! Случилось СТРАШНОЕ!!!111недостаток предыдущего кода в том, что этот warning загрузится в буфер, и обработается неизвестно когда (когда этот буфер заполнится, если вообще заполнится).