Чтение из постоянно изменяющегося файла журнала

Существует /location/of/thefile , который является постоянно меняющимся лог-файлом. Средняя плотность освежения составляет 4 в минуту, возможная максимальная частота обновления может составлять 30-40 в минуту. Каждое обновление добавляет 2-5 строк (среднее), но это может быть сотни в крайних случаях. Каждая строка начинается с метки времени [YYYY-MM-DD HH:MM:SS] за которой следует открытый текст (100-200, максимум несколько сотен символов).

Моя задача – создать простую команду, которая непрерывно следит за этим файлом журнала и отправляет в stdout строки, содержащие bar алфавитного алфавита foo OR . До и после этих (под) строк могут быть любые символы ( \n только после (под) строки, конечно), даже \0 . Капитализация слов может быть всеми возможными вариантами.

Ну, мои идеи для решения всегда содержат системные вызовы для синхронизации, но я не должен их использовать. Пожалуйста, постройте мне простую команду . Спасибо очень много!

  • Приведение fluxbox в другое время, а затем часовой пояс по умолчанию
  • FreeBSD и Windows показывают разные времена
  • Удаление часового экрана в Linux Mint
  • Можно ли изменить синхронизацию для аудиокодека из Linux (userland или driver)?
  • Не удается получить доступ к аппаратным часам в качестве пользователя без полномочий root
  • 2 Solutions collect form web for “Чтение из постоянно изменяющегося файла журнала”

    Возможно, я не понимаю вопрос, но есть ли причина, по которой вы не можете это использовать?

    tail -f /location/of/thefile | grep -i -E "foo|bar"

    используйте именованный канал следующим образом:

    файл для непрерывного чтения: logfile.txt

    код: (скажем readfile.sh), в то время как read line do echo $ line done <mypipe

    В ракушке:

    mkfifo mypipe ./readfile.sh это заблокирует (не выйдет)

    В оболочке anoher перейдите в тот же каталог.

    tail -f logfile.txt >> mypipe, и это пойдет на задний план

    Готово. все, что входит в файл logfile.txt, будет напечатано через readfile.sh, который не вышел.

    Linux и Unix - лучшая ОС в мире.