Как получить непрерывный поток, с подкачкой

Я отправил это в Superuser, но не получил ни одного получателя: https://superuser.com/questions/832578/how-to-grep-a-continuous-stream-with-paging

Я хочу взять файл журнала и отфильтровать некоторые нерелевантные записи журнала, например, на уровне INFO. Приведенный выше ответ на Stack Overflow дал мне часть пути:

$ tail -f php_error_log | grep -v INFO

Следующая часть, которую я хочу, это иметь подкачку в этом потоке, например, с поменьше. less +F работает с непрерывными потоками, но я не могу применить это к grep. Как я могу сделать это?


После публикации этого вопроса я работал над ним и обнаружил, что less ожидает появления EOF и зависает до тех пор, пока не получит его ( источник). Это объясняет, почему попытка следовать по трубе не работает. Я взломал короткий сценарий, чтобы сделать то, что я хочу, неуверенно:

#!/bin/bash
tail -f /data/tmp/test.txt | grep --line-buffered foo > /data/tmp/foo &
pid=$!
echo $pid
sleep 1
less +F /data/tmp/foo
kill $pid
rm /data/tmp/foo

Я убежден, что это можно сделать более элегантно, возможно, с помощью временного файла, который автоматически очищается без прямого взаимодействия.

1 ответ

Решение

Как насчет этого:

grep -V INFO php_error_log | less +F

Или вы можете запустить multitail php_error_log, затем, как только начинается многоходовая сеть, нажмите e и следуйте инструкциям, чтобы добавить регулярное выражение для фильтрации. Для непрерывного мониторинга одного или нескольких файлов журнала с течением времени, многокомпонентное решение является хорошим решением.

Другие вопросы по тегам