LINUX.ORG.RU

Чтение из дополняемого файла


0

0

Есть следующая задача.

Имеются программы, пишушие лог-файлы определенного формата. Надо написать скрипт, который следит за дополнением файла и посылает email в том случае, когда в файле встречается определенная строка. Как реализовать это на perl ?

anonymous

Поставь logwatch и забей велосипед изобретать.

Nefer
()

Если интересует, то на bash это выглядит так:
#!/bin/bash
send_email()
{
	... отправка мыла
}

read_data()
{
        while read data1 data2 data3 data4 # зависит от формата
        do
                case $data1 in
                        some_text_that_matches) send_email ; continue ;;
			... blah-blah-blah
                        *) continue ;;
                esac
        done
}

tail -n 1 -f /path/to/your/log/file | read_data

Druker
()

#!/usr/bin/perl

open(F,"<logfile");

while(1)

{

   if (eof(F)) {system("sleep 10s")}

   else

   {

     $str=<F>;

     if ((split(/ /,$str))[xz] eq "something") { send_mail_to...}

   }

}



Типа читаем файл до конца, потом (если конец) засыпаем на 10 сек.

Просыпаемся, "уже не конец файла" ?

Да - читаем снова до конца

Нет - снова засыпаем



P.S. Если не делать sleep, а постоянно дергать файл, то top будет

показывать, что этот процесс грузит CPU на 99..100%

spirit ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.