Czy istnieje prosty sposób, aby zrobić coś takiego, tail -f mylogfileale wyświetlać zmiany więcej niż jednego pliku (być może z nazwą pliku dodaną jako prefiks do każdej linii)? A może narzędzie GUI? Używam Debiana.
Dziękuję za tę wskazówkę. To bardzo pomocne narzędzie. Może także obcinać pliki, wyczyścić ekran jednym skrótem i tak dalej.
stofl
Odpowiedzi:
92
Próbowałeś tail -f file1 file2? Wygląda na to, że robi dokładnie to, co chcesz, przynajmniej na moim komputerze FreeBSD. Być może to, tailco jest dostarczane z systemem Debian, może to zrobić?
Tak. To działa! Dziękuję Ci. Nigdy nie spodziewałem się, że będzie to TAK łatwe.
stofl
11
Zwykle używam -Fzamiast tego, ponieważ pewna liczba plików może zostać obcięta podczas ponownego uruchamiania programów serwera.
Arcege,
10
Moim nowym ulubionym zestawem parametrów jest tail -qF *.log: -qukrycie nazw plików i -F, jak zauważył Arcege, pozostawienie tailnazwy zamiast deskryptora, ponieważ moje pliki dziennika są obracane.
Denis Drescher,
Sprawdzony także w systemie Ubuntu 16.04 LTS
Ricardo
Jest na to ograniczenie. Mam folder z plikami dziennika PID dla pracownika, który zaczyna się przy każdym nowym zadaniu w kolejce (tak wiele PID). Jeśli tail -f /var/log/folder/*zwróci błąd „nie można wykonać / usr / bin / tail: lista argumentów za długa”
flickerfly
3
Z jakiegoś powodu odpowiedzi w rodzaju „ tail -f file1 file2nie” miałem na myśli.
Chcę wiedzieć, co wydarzyło się w kilku logach, ostatnio „lokalnie”, niezależnie od globalnego porządku chronologicznego.
Aby to zrobić, użyłem czegoś bardziej podobnego watch -n1 tail -n10 file1 file2
Głównym „uaktualnieniem” jest to, że linie są oznaczone kolorami według nazwy pliku i że możesz mieć interfejs podobny do tabeli.
Innym ulepszeniem, a właściwie głównym powodem, dla którego to napisałem, jest możliwość posiadania plików .splexrc.json w różnych folderach, więc zamiast tego wpisywać tail -f f1 f2 f3w jednym folderze, a następnie w innych plikach w innym, możesz zapisać plik .splexrc.json w katalogu głównym twój projekt i po prostu wpisz splexbez argumentów listy plików, a automatycznie przesyła strumieniowo odpowiednie dzienniki wyliczone w pliku konfiguracyjnym.
multitail
jest tam król. Zobacz Łączenie danych wejściowych z wielu plików / potoków bez blokowania linii lub blokowania?Odpowiedzi:
Próbowałeś
tail -f file1 file2
? Wygląda na to, że robi dokładnie to, co chcesz, przynajmniej na moim komputerze FreeBSD. Być może to,tail
co jest dostarczane z systemem Debian, może to zrobić?źródło
-F
zamiast tego, ponieważ pewna liczba plików może zostać obcięta podczas ponownego uruchamiania programów serwera.tail -qF *.log
:-q
ukrycie nazw plików i-F
, jak zauważył Arcege, pozostawienietail
nazwy zamiast deskryptora, ponieważ moje pliki dziennika są obracane.tail -f /var/log/folder/*
zwróci błąd „nie można wykonać / usr / bin / tail: lista argumentów za długa”Z jakiegoś powodu odpowiedzi w rodzaju „
tail -f file1 file2
nie” miałem na myśli.Chcę wiedzieć, co wydarzyło się w kilku logach, ostatnio „lokalnie”, niezależnie od globalnego porządku chronologicznego.
Aby to zrobić, użyłem czegoś bardziej podobnego
watch -n1 tail -n10 file1 file2
źródło
Do ćwiczenia napisałem mały program narzędziowy, który robi to samo co tail -f f1 f2 f3
Spleks:
https://www.npmjs.com/package/splex
Głównym „uaktualnieniem” jest to, że linie są oznaczone kolorami według nazwy pliku i że możesz mieć interfejs podobny do tabeli.
Innym ulepszeniem, a właściwie głównym powodem, dla którego to napisałem, jest możliwość posiadania plików .splexrc.json w różnych folderach, więc zamiast tego wpisywać
tail -f f1 f2 f3
w jednym folderze, a następnie w innych plikach w innym, możesz zapisać plik .splexrc.json w katalogu głównym twój projekt i po prostu wpiszsplex
bez argumentów listy plików, a automatycznie przesyła strumieniowo odpowiednie dzienniki wyliczone w pliku konfiguracyjnym.źródło