Mam oprogramowanie, które obraca swoje pliki dziennika po ponownym uruchomieniu. Jednak podczas programowania często go restartuję, dlatego w każdej chwili chciałbym monitorować najnowszy plik dziennika.
Jeśli zacznę less
normalnie od less program.log
i wcisnę Shift+, fby ogonić, kiedy plik dziennika zostanie obrócony, kontynuuję monitorowanie starego pliku dziennika. Zakładam, że dzieje się tak, ponieważ numer i-węzła pozostaje taki sam i less
ma otwarty uchwyt pliku dla tego i-węzła.
Czy można monitorować najnowszą aktywność w dowolnym pliku dziennika, który jest obecnie nazywany program.log
?
W szczególności pracuję nad Sun OS, więc rozwiązanie, które tam działa, byłoby idealne.
tail -F program.log | less
zadziałatail -f program.log
próbowałeś tego?Odpowiedzi:
Użyj,
less --follow-name
jeśli Twoja wersjaless
to obsługuje. Ta opcja została wprowadzona w wersji 416.źródło
less
Rozwiązaniem--follow-name
jest tylko część roztworu;Aby zastąpić
tail -F
, potrzebny jest inny argument:Sama opcja „tak”
less --follow-name file.log
nie uruchamia się po aktualizacjach plików. Musisz wejść w tryb śledzenia naciskając ShiftF.(Wyjdź z trybu, aby nawigować ControlC.)
Zamiast podążać za plikiem,
--follow-name
modyfikuje zachowanie less.Sprawia, że klawisz polecenia ShiftFwewnątrz polecenia
less
follow jest oparty na nazwie pliku, a nie na deskryptorze pliku.Ponadto nie ma normalnej opcji uruchamiania
less
w trybie śledzenia.Ale możesz użyć wiersza poleceń, aby wykonać naciśnięcia klawiszy po uruchomieniu, poprzedzając je znakiem
+
.Łączenie opcji modyfikatora z
+F
,less
faktycznie rozpocznie się w (zmodyfikowanym) trybie śledzenia.Użyj
+F
samego dla ekwiwalentu zwykłegotail -f
:źródło
Właśnie znalazłem odpowiedź w tym pytaniu U&L zatytułowanym: Jak zrobić
tail -f
z obróconych plików dziennika? .Używanie
tail
:(jeśli instalacja GNU tail w twoim systemie jest opcją)
Ze strony man tail :
Kluczem jest
--retry
przełącznik. To nakazujetail
komendzie ponawianie próby śledzenia pliku według nazwy.-F
Przełącznik ma zarówno-f
a--retry
.Za pomocą
less
Jak zauważył @StephaneChazela w komentarzach, poniższe działania nie będą działać.
Jedyną inną opcją, którą masz, jest użycie mniej bezpośrednio, zakładając, że obsługuje on bezpośrednio
--follow-name
przełącznik iless
plik, rezygnując ztail
całkowitego użycia .źródło
less
zawiesi się, jeśli zrobisz „G” pr „F”. Które możesz przerwać wykonując „Ctrl-C”, ale potem zabija ogon. Możesz wtedy uodpornić ogon na Ctrl-C, ale nadal nie jest zbyt użyteczny.