Я пытаюсь получить работающую систему для мониторинга специальных журналов. Я обычно просто хочу очень специфический паттерн, который я извлекаю, используя grep
и трубу из tail -f
. Я заметил, что grep выводит не все, а сохраняет некоторые строки в буфере. Я думаю, это имеет смысл, если у вас есть канал, который будет выводить все, а затем завершать и закрывать поток.
Но с tail -f
это не работает для меня.
Та же проблема появляется с sed
.
Вот пример команды, которую я хочу использовать:
clear && tail -F -n1000 /var/log/fail2ban.log | grep 'WARNING.*Ban' | sed s/'fail2ban.actions: WARNING '//g | grep -E --color 'ssh-iptables-perma|$'
Чтобы привести пример:
Последняя строка приведенной выше команды такова:
2015-05-04 11:17:24,551 [ssh-iptables] Ban x.x.x.x
И с помощью этой команды:
clear && tail -F -n1000 /var/log/fail2ban.log | grep 'WARNING.*Ban' | sed s/'fail2ban.actions: WARNING '//g
Последняя строка это:
2015-05-04 19:45:17,615 [ssh-iptables] Ban y.y.y.y
Удаление дальнейших трубок приводит меня к самым последним записям.
Как я могу избежать этого кеширования в каналах?