Доброго времени суток.
Задача. Есть лог файл, который постоянно пополняется. При появлении в строке слова SEND необходимо выдернуть эту строку и выполнить над ней скрипт.
Конструкция:
tail -f /home/nelubin/071031.log | grep SEND
выводит на экран нужные строки
Хотелось такой строкой
tail -f /home/nelubin/071031.log | grep SEND >> /home/nelubin/123
записать вывод в файл, но этого не происходит. Что здесь не так?
Скорее всего дело в буфферизации для неинтерактивного(stdoutput перенаправлен) запуска. А зачем вам писать в файл? Попробуйте просто читать вывод tail -f /home/nelubin/071031.log | grep SEND в while. Можно еще попробовать set -v, может поможет
>Попробуйте просто читать вывод tail -f /home/nelubin/071031.log |
>grep SEND в while.СПАСИБО, то, что надо.
>Скорее всего дело в буфферизации для неинтерактивного(stdoutput перенаправлен) запуска.
Если не сложно, то где можно узнать подробнее?
>А зачем вам писать в файл?
Это уже не актуально.
>Если не сложно, то где можно узнать подробнее?хз, есди своими словами то когда вывод идет на экран, то он обычно не буфферизуется. То есть пришла строка - вылюнули на экран. Когда же вывод идет в файл, то для сокращения количества обращений к файлу сначала накапливается определённый объем и только потом сбрасывается в файл. В результате у вас с какого-то момента данные в файле стали бы появлятся, но кусками фиксированного(в байтах) размера, что означало бы порезанные строки.