Usiłuję uzyskać działający system do monitorowania specjalnych dzienników. Zwykle chcę tylko bardzo konkretnego wzoru, z którego wydobywam, grep
i fajki tail -f
. Zauważyłem, że grep nie wyświetla wszystkiego, ale zamiast tego zachowuje bufor niektórych linii. Myślę, że ma to sens, jeśli masz potok, który wyprowadzi wszystko, a następnie zakończy i zamknie strumień.
Ale tail -f
to mi nie wychodzi.
Ten sam problem występuje z sed
.
Oto przykładowe polecenie, którego chcę użyć:
clear && tail -F -n1000 /var/log/fail2ban.log | grep 'WARNING.*Ban' | sed s/'fail2ban.actions: WARNING '//g | grep -E --color 'ssh-iptables-perma|$'
Aby podać przykład:
Ostatni wiersz powyższego polecenia to:
2015-05-04 11:17:24,551 [ssh-iptables] Ban x.x.x.x
I używając tego polecenia:
clear && tail -F -n1000 /var/log/fail2ban.log | grep 'WARNING.*Ban' | sed s/'fail2ban.actions: WARNING '//g
Ostatnia linia to:
2015-05-04 19:45:17,615 [ssh-iptables] Ban y.y.y.y
Usunięcie kolejnych potoków prowadzi mnie do najnowszych wpisów.
Jak mogę uniknąć buforowania w rurach?
sed
.