Otwórz plik tekstowy i pozwól się zaktualizować


20

Jak mogę otworzyć plik tekstowy i pozwolić się zaktualizować? Podobnie do sposobu topdziałania.

Chcę otworzyć plik dziennika i obserwować, jak sam się aktualizuje w locie.

Właśnie próbowałem:

$ tail error.log

Ale właśnie zdałem sobie sprawę, że po prostu pokazuje linie w pliku dziennika.

Używam RHEL 5.10


4
Użyjtail -f error.log
garethTheRed

Ach, więc tailczy to właściwy sposób, aby z niego korzystać? Wow, naprawdę nie sądziłem, że mógłbym z tego skorzystać. Spodziewałem się znacznie dłuższego wyrazu twarzy.
Kevdog777

1
Do Twojej wiadomości, podczas gdy ogon jest narzędziem do pracy, dosłownie open a text file and let it update itselfmożna go osiągnąć watch cat filename.
Cthulhu

1
@Cthulhu masz na myśli watch cat filenamelub podobny. watch filenamespróbuje wykonać filename.
terdon

@terdon Tak, rzeczywiście.
Cthulhu

Odpowiedzi:


29

Szukasz tail -f error.log(z man tail):

   -f, --follow[={name|descriptor}]
          output appended data as the file grows; -f, --follow, and --fol‐
          low=descriptor are equivalent

Umożliwi to obejrzenie pliku i zobaczenie wszelkich dokonanych w nim zmian.


A to nie zużyje dużo zasobów?
Kevdog777

1
@ Kevdog777 tak naprawdę nie. Prawdopodobnie po prostu ponownie otwiera plik co kilka sekund, aby go zaktualizować. Jest to jednak klasyczny sposób robienia tego, co chcesz.
terdon

1
@terdon, otwiera się tylko (może ponownie otworzyć) z -F. Dzięki -ftemu po prostu czyta co sekundę. To jest jak while cat; do sleep 1; done < file. Zobacz inotailw Linuxie bardziej reaktywny ogon (używa, inotifyaby wiedzieć, kiedy plik jest modyfikowany).
Stéphane Chazelas

@ StéphaneChazelas: Jestem pewien, że jest o wiele bardziej wydajny. Założę się, że użyj select lub ankiety, aby sprawdzić, czy fd jest czytelny, a następnie spać, aż będą dostępne dane na fd. Chociaż mogę się całkowicie mylić.
Martin York,

1
@LokiAstari, nie można uzyskać większej wydajności niż readwywołanie systemowe co sekundę. „Odczyt” selectlub pollzwykły plik zawsze zwróci prawdę, ponieważ read()nigdy nie blokuje zwykłego pliku, więc nie zadziała. Powiedziawszy to, GNU tailużywa teraz inotifyw Linuksie, więc inotailnie jest już potrzebny.
Stéphane Chazelas

20

Użyj „mniej” zamiast „ogon” do przewijania i wyszukiwania

Można użyć tail -f error.logalbo lepiej: tail -F error.log.

Ale jeśli chcesz przewinąć plik do tyłu, nie jest to bardzo przydatne.

Z

less +F error.log

dostajesz funkcję tail -f,
ale możesz przerwać odczyt nowego wejścia za pomocą Ctrl+ C.

Następnie znajdujesz się w lesstrybie normalnym , w
którym możesz przewinąć do tyłu, aby zobaczyć, co możesz przegapić za pomocą Up/ Down
Ponadto możesz czytać długie wiersze pliku dziennika bez zawijania, używając Left/Right

Wyszukaj i pokaż tylko pasujące linie

Możesz także wyszukiwać wyrażenia regularne za pomocą /, ?do tyłu ni Ndo następnego / poprzedniego.

Bardzo interesujące dla plików dziennika jest to, że można ukryć wszystkie niepasujące wiersze wyszukiwania &, odfiltrowując tylko dopasowania.

Klawisze w wierszu poleceń

Z Fwewnątrz less, to w dalszym ciągu ten tail -ftryb -jak.
W +wierszu poleceń less +Foznacza „naciśnij te klawisze bezpośrednio po uruchomieniu mniej”.

Więc użyliśmy klawisza Fprzy starcie, który jest opisany jako:

F  Scroll  forward,  and  keep trying to read when the end of file is
   reached.  Normally this command would be used when already at  the
   end  of the file.  It is a way to monitor the tail of a file which
   is growing while it is being viewed.  (The behavior is similar  to
   the "tail -f" command.)

Zobacz także, multitailczy chcesz obejrzeć więcej niż jeden plik dziennika.


Dzięki, ale tail -f error.logjest idealny na to, czego potrzebuję. Plik dziennika jest aktualizowany tylko co godzinę, więc jest wystarczający do mojego użytku :-)
Kevdog777

1
Pamiętaj, aby pamiętać o tym następnym razem;)
Volker Siegel

mostma również tail -ftryb z F.
Stéphane Chazelas,

@ StéphaneChazelas racja, dzięki! Hmmm ... Pamiętam, że ktoś podziękował mi za wspomnienie mostchwilę temu ... i zapomniałem.
Volker Siegel,

@ StéphaneChazelas Ale mostczy nie wydaje się, że ma mniej funkcji filtrowania, &aby wyświetlać tylko pasujące linie? Zwykle przydatna funkcja w plikach dziennika.
Volker Siegel,

5

Użyj -fopcji z tail:

-f, --follow [= {nazwa | deskryptor}] generuje dołączane dane wraz ze wzrostem pliku; -f, --follow i --follow = deskryptor są równoważne

Lub użyj Fpolecenia wewnątrz less:

   F      Scroll forward, and keep trying to read when the end of file is reached.  Normally this command would be used when already at the end of the file.  It is a way to mon‐
          itor the tail of a file which is growing while it is being viewed.  (The behavior is similar to the "tail -f" command.)

Co nowego w tej odpowiedzi?
bluefoggy

1
Nie rozumiem o co pytasz. Była to druga odpowiedź na to pytanie i pierwsza, o której wspomniano less.
Arkadiusz Drabczyk
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.