LINUX.ORG.RU

Способ отслеживать только хвост большого лога?


0

0

Проблема такая. Есть программулька, выводящая в stdout свой лог. Лог очень насыщенный, а свободного места на диске мало - если логировать в файл, кончится очень быстро, это не подходит. Поэтому хочется придумать способ, чтобы в файле на диске был постоянно только самый хвост лога, а остальное бы выбрасывалось в никуда.

Или, что тоже подходяще, как бы можно было бы выводить лог в /dev/null, но по желанию, __не обрывая выполнение прилады__, перенаправить её лог в нужный файл (как бы забрать сачком кусочек лога), а потом опять перанаправить его в /dev/null?

Оч. нужно, помогите!

Заранее большое спасибо!


Все уже придумано. Лог выводится в именованный канал по имени /tmp/vasya. man mkfifo Если тебе интересно происходящее в данный момент, то пишешь cat /tmp/vasya - cat заблокируется и будет выводить в свой stdout пока твой интерес не угаснет.

anonymous
()
Ответ на: комментарий от aton

и ? решение очевидно - не надо тупить и чего-то перенаправлять. Надо просто выводить нужную часть а все остальное либо

а) не выводить

б) либо затирать

Если нужен именно конец лога, то самым простым решением, особо не влияющим на логику работы программы будет предложенный вариант с кустомизацией под конкретную задачу.

GameMagister
()
Ответ на: комментарий от GameMagister

lseek/fseek или я чего то непонимаю ...

anonymous
()
Ответ на: комментарий от anonymous

проблема в том что прога не сможет писать в канал из которого никто не читает с той стороны. кажись действительно надо писать свою програмку которая создает именованный канал читает отуда лог и пишет его в циклический буфер которым являеться за mmap`иный файл (с флагом SYNC конечно) настоящего лога. Вообщем то прогрмака на строк 40 не более...

anonymous
()

Народ, я еще раз ответственно заявляю, что в такой ситуации нужно использовать именованный канал. Это такой UNIXовый design pattern, который применяется в очень многих случаях. Открывать канал на запись нужно с O_NONBLOCK. Если не читать, то никаких проблем типа разбухания какого-нибудь временного файла не возникает.

С другой стороны, возможно, есть смысл подумать в сторону syslog.

anonymous
()
Ответ на: комментарий от anonymous

Поясни что ты имел в виду, уродец. Или тебе просто вспеoзднулося

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