Jak mogę zmniejszyć nazwę pliku zamiast numeru i-węzła?


11

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ę lessnormalnie od less program.logi 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 lessma 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.


może tail -F program.log | lesszadziała
sendmoreinfo

tail -f program.log próbowałeś tego?
Rahul Patil

Odpowiedzi:


17

Użyj, less --follow-namejeśli Twoja wersja lessto obsługuje. Ta opcja została wprowadzona w wersji 416.


Doskonała odpowiedź. Zarówno Solaris 10, jak i Solaris 11 używają mniej wersji 436, więc ta opcja jest rzeczywiście dostępna.
unixhacker2010

5

lessRozwiązaniem --follow-namejest tylko część roztworu;
Aby zastąpić tail -F, potrzebny jest inny argument:

less --follow-name +F file.log

Sama opcja „tak” less --follow-name file.lognie 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 lessfollow jest oparty na nazwie pliku, a nie na deskryptorze pliku.

Ponadto nie ma normalnej opcji uruchamiania lessw 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, lessfaktycznie rozpocznie się w (zmodyfikowanym) trybie śledzenia.

Użyj +Fsamego dla ekwiwalentu zwykłego tail -f:

less +F file.log

1

Właśnie znalazłem odpowiedź w tym pytaniu U&L zatytułowanym: Jak zrobić tail -fz obróconych plików dziennika? .

Używanie tail:

(jeśli instalacja GNU tail w twoim systemie jest opcją)

tail -F program.log

Ze strony man tail :

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

   -F       same as --follow=name --retry

   --retry  keep  trying  to  open  a  file even when it is or becomes
            inaccessible; useful when following by name, i.e., with
            --follow=name

Kluczem jest --retryprzełącznik. To nakazuje tailkomendzie ponawianie próby śledzenia pliku według nazwy. -FPrzełącznik ma zarówno -fa --retry.

Za pomocą less

Jak zauważył @StephaneChazela w komentarzach, poniższe działania nie będą działać.

tail -F program.log | less

Jedyną inną opcją, którą masz, jest użycie mniej bezpośrednio, zakładając, że obsługuje on bezpośrednio --follow-nameprzełącznik i lessplik, rezygnując z tailcałkowitego użycia .

less --follow-name program.log

Czasami bardzo nie lubię Sun OS ...
Alex Chamberlain

Zgadzam się, pracowałem przez lata, to doprowadza cię do szału, że oprzyrządowanie ma 10 lat dla niektórych aplikacji. Nie ma sensu. Ta strona była nieoceniona dla zachowania twojego zdrowia psychicznego w Solarisie: sunfreeware.com/introduction.html
slm

jeśli chcesz więcej zdrowia psychicznego, sprawdź pkgsrc.org :)
sendmoreinfo

To nie zadziała dobrze. Ponieważ lesszawiesi 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.
Stéphane Chazelas

W odniesieniu do ogona GNU: sprawdź to, aby dowiedzieć się, jakie narzędzia powinny być dostępne na dowolnym hoście Solaris. (Właściwie ogon GNU jest tam domyślnie w Solarisie 11). Administratorzy systemu Solaris często utrudniają ich użytkownikom, ponieważ pozostawiają instalację na bardzo prostej instalacji, podczas gdy narzędzia GNU dla systemu Solaris są obecnie dostępne bezpośrednio z Oracle lub w niektórych przypadkach są częścią instalacji domyślnej. Nie ma powodu, aby nie włączać go do instalacji. Nie ma powodu, aby przejść do „nieoficjalnych” repozytoriów. Zobacz link.
unixhacker2010
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.