Tail -f logfile и logrotate, Zl0, 20-Июн-12, 16:22 [смотреть все]Привет, делаю скриптец который разбирает файл построчно, там если функция которая реализует "tail -f", но вот затыка в том что ночью файлы ротейтятся, и дескриптор, читаемый файл подменяется, а скрипт продолжает читать информацию по дескриптору из старого файла, в который ничего уже не пишется. Подскажите как переделать функции, не могу додумать что проверять в цикле текующую позицию или брать каждый раз статистику о файле или время его создания?Пожалуйста не предлагайте использовать класс типо "filetail.py" и пр., хотелось бы реализовать коротко и просто в своем скрипте, без левых "нестандартных классов", которые не идут в redhat "из коробки". #Set the filename and open the file filename = 'security_log' file = open(filename,'r') #Find the size of the file and move to the end st_results = os.stat(filename) st_size = st_results[6] file.seek(st_size) while 1: where = file.tell() line = file.readline() if not line: time.sleep(1) file.seek(where) else: print line # и дальше
|
- Tail -f logfile и logrotate, vg, 18:01 , 20-Июн-12 (1)
- Tail -f logfile и logrotate, Zl0, 18:18 , 20-Июн-12 (2)
> Держать файл всегда открытым сторонним скриптом не очень хорошо > Не лучше ли считывать по-минутно только последние записи? > А так - в logrotate есть опция "truncate" - это можно использовать > для вашего случая > файл копируется, и потом все записи стираются, но сам дескриптор остается прежним. Спасибо за совет, действительно держать лишний лок на файле плохая идея, т.е лучше делать в цикле открыть/читать/закрыть/ждать , запоминая последнюю позицию? Поминутно достаточно редко, нужен реалтайм или очень близко к этому.
- Tail -f logfile и logrotate, Andrey Mitrofanov, 12:42 , 21-Июн-12 (4)
- Tail -f logfile и logrotate, Zl0, 14:18 , 21-Июн-12 (5)
>> Привет, делаю скриптец который разбирает файл построчно, там если функция которая реализует >> "tail -f", но вот затыка в том что ночью файлы ротейтятся, > man tail > tail -F >> и дескриптор, читаемый файл подменяется, а скрипт продолжает читать информацию по > Про "скриптец" ничего не скажу.Как бы сабж про реализацию "tail -f" в питоне, кэп.
- Tail -f logfile и logrotate, Andrey Mitrofanov, 17:54 , 21-Июн-12 (6)
- Tail -f logfile и logrotate, Zl0, 18:07 , 21-Июн-12 (7)
>>> Про "скриптец" ничего не скажу. >> Как бы сабж про реализацию "tail -f" в питоне, кэп. > Ой, а я и не понял. Так бы дёргал stat()-ом номер айнода > файла и при изменении переоткрывал поимени, но ведь Пииииитон!!! же ж. > Бьюсь ап стену в тупом бессилии.Ну реализовал похоже немного, дергаю fstat время создания файла, и если файл по дескриптору старше, чем файл провереный по имени, то ...
|