Czy jest możliwe zrobienie tail -f
(lub podobnego) pliku i grep
jednocześnie? Nie miałbym nic przeciwko innym poleceniom, które tylko szukają tego rodzaju zachowania.
shell
command-line
grep
tail
ksenoterracid
źródło
źródło
Będzie działać dobrze; bardziej ogólnie,
grep
poczeka, gdy program nie wyświetla danych wyjściowych, i będzie czytał dalej, gdy pojawi się wynik, więc jeśli to zrobisz:Nic się nie wydarzy przez 5 sekund, następnie grep wyświetli dopasowany „test”, a następnie pięć sekund później zakończy działanie, gdy zakończy się proces potokowy
źródło
Dodaj
--line-buffered
dogrep
, a to może zmniejszyć opóźnienie. Bardzo przydatne w niektórych przypadkach.źródło
grep
nie trafiają do terminala (przekierowywany do innego typu pliku). buforowanie linii jest domyślne, gdy dane wyjściowe trafiają do terminala, więc nie robi to żadnej różnicy. Zauważ, że ta opcja jest specyficzna dla GNU.Możesz po prostu przesłać dane wyjściowe
grep
dotail -f
. Istnieją również programy, które łączątail -f
funkcjonalność z filtrowaniem i kolorowaniem, w szczególności multitail ( przykłady ).źródło
Widzę tych wszystkich ludzi, którzy mówią, aby korzystać
tail -f
, ale nie podoba mi się to! Moją ulubioną metodą wyszukiwania pliku przy jednoczesnym obserwowaniu nowych wierszy (np. Zwykle pracuję z plikami dziennika, do których są dołączane przekierowane dane wyjściowe procesów wykonywanych okresowo za pomocą zadań cron):Zakłada to ogon i grep GNU. Dodatkowe informacje ze strony ogona (GNU coreutils, mój to v8.22) [ https://www.gnu.org/software/coreutils/manual/coreutils.html] :
Tak więc część
tail --follow --retry --lines=+0
końcowa mojego polecenia jest równa temu , w którym ostatni argument kieruje go do rozpoczęcia od początku, pomijając linie zerowe.źródło
Użyj powyższego, zwykle go używam.
źródło
Możesz użyć netcata do grepowania wyników tail -f, ponieważ nowe wyniki pojawiają się dość łatwo.
To ustawia grep na nasłuchiwanie wyników dla danych wejściowych pochodzących z portu 1337.
Drugie polecenie przekazuje dane wyjściowe tail -f do netcat i wysyła je do lokalnego hosta 1337. Aby to zrobić lokalnie, należy przełączyć ttys dla każdego z dwóch zestawów poleceń lub użyj czegoś takiego jak ekran.
źródło
To działa. Uważaj jednak, aby dane wyjściowe nie były natychmiastowe: są buforowane przez potok.
źródło
tail -f
w jednym oknie, atail -f logfile | grep pattern
w drugim oknie. Linie zawierającepattern
nie zawsze pojawiają się w obu oknach jednocześnie. Widziałem linie pojawiają się w odstępach 30 sekund w rzadkich przypadkach, co było denerwujące.tee
czy coś.