Czy „tail -f” jest bardziej wydajny niż „less + F”?


34

Ten artykuł zwrócił uwagę na kilka powodów, aby korzystać z less +Fponad tail -f. Większość powodów dotyczy funkcji , a nie przyczyn technicznych : less +Fmoże wyróżniać, wyszukiwać, nawigować po pliku.

Co z przyczyn technicznych ?

AFAIK, lessużywa odpytywania co sekundę, aby zaktualizować plik, natomiast tail, zgodnie z definicją POSIX, użyj pętli, która śpi przez 1 sekundę i kopiuje wszystkie dostępne bajty. Jest to wystarczające, ale POSIX zachęcał również do implementacji do korzystania z bardziej wydajnej metody. Przynajmniej korzystanie z ogona GNU inotify , więc jest bardziej wydajne.

less utrzymuje również zawartość pliku w pamięci, więc przy dużych plikach, takich jak kilka gigabajtów, może spowolnić komputer.

Tak, czy istnieje jakieś inne technicznych powodów do korzystania z tail -fponad less +F?

Odpowiedzi:


37

Myślę, że omówiłeś główny punkt: less +Fodczytuje cały plik, podczas gdy w wielu systemach tail -fodczytuje tylko koniec pliku, a nawet w systemach, w których odczytuje cały plik, przynajmniej nie zachowuje całego pliku w pamięci. To sprawia, że less +Fniepraktyczne jest w przypadku bardzo dużych plików. Możesz jednak uruchomić less -n +F, co powoduje lessodczyt tylko końca pliku, kosztem nie wyświetlania numerów linii.

Podstawową różnicą między less -n +Fi tail -fjest to, że tailużywa usługi powiadamiania o zmianie plików na niektórych platformach (np. Inotify w systemie Linux), która pozwala na natychmiastowe wyświetlanie nowych danych, podczas gdy wyświetlanie nowych danych lessmoże potrwać do 1 sekundy ponieważ sprawdza nowe dane w pętli i śpi między sprawdzeniami.

Kolejna różnica między less +Fi tail -fpolega na tym less, że wywoła swój filtr wejściowy, ale zwykle nie będzie to miało wpływu na pliki dziennika.

Różnica techniczna, która jest na korzyść, less +Fpolega na tym, że możesz przycinać linie na szerokości ekranu za pomocą -Sopcji, a nie taildaje wyboru, ale wyświetlać całą linię bez względu na to, jak długo ona trwa.

Jeśli chodzi o interfejs, korzystanie z niego nie jest tak duże less. tail -fwarto zauważyć, kiedy coś się dzieje. Możesz nawet uruchomić go w tle. Jeśli coś się stanie i chcesz przyjrzeć się plikowi bardziej szczegółowo, możesz otworzyć go lessw innym terminalu.

Jeśli chcesz oglądać wiele plików, możesz skorzystać z multitail . Nawet w przypadku pojedynczego pliku multitail ma dodatkowe przydatne funkcje, takie jak filtrowanie i kolorowanie.


Czy przy bardzo dużym pliku „mniej-n 99,99p + F” uniemożliwia odczytanie całego pliku przez mniej?
cuonglm

1
@cuonglm Ah, racja. Wystarczy less -n, aby mniej wykorzystać strategię „szukaj do końca, a potem czytaj ponownie”.
Gilles 'SO - przestań być zły'
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.