Dlaczego tryb mniejszego ogona przestaje działać?

11

Używanie lesspolecenia w systemie Linux w trybie tail (polecenie F lub mniej -f) konsekwentnie przestaje działać na niektórych komputerach i / lub niektórych plikach. Nowe zmiany po prostu przestają się pojawiać.

Wiem, że naprawiłem to już dawno temu, ale nie pamiętam, jakie było rozwiązanie.

Jakieś pomysły?

DRZEWO
źródło
Czy próbowałeś użyć strace, aby zobaczyć, co robi (nie) robi? Może zobaczysz błąd.
wfaulk
Do Twojej wiadomości, pozostaje to bez odpowiedzi, ponieważ plik nie był walcowany / obracany / odtwarzany.
DRZEWO

Odpowiedzi:

12

Spróbuj użyć less --follow-name. Nawet jeśli plik ma tę samą nazwę, proces (y) aktualizujący go może to robić w sposób, który zmienia i-węzeł pliku - więc z punktu widzenia systemu operacyjnego jest to nowy plik po aktualizacjach.

Doug Harris
źródło
+1 idealna odpowiedź, właśnie dlatego ta opcja została wprowadzona. Zauważ, że --follow-namezostał wprowadzony w mniejszej wersji v415 ( greenwoodsoftware.com/less/news.415.html ), wydanej 15 listopada 2007 r. Dlatego stara instalacja Linuksa może go nie mieć.
śleske
3

Czy przeglądasz pliki dziennika, które są obracane przez logrotate? Jeśli nazwa pliku, który jest mniej oglądany, zostanie zmieniona (np. Z dziennika na log.0 przez logrotate), less będzie nadal oglądać ten plik, nawet jeśli nowe wpisy są zapisywane w innym pliku (z oryginalną nazwą).

Randy Orrison
źródło
W takim przypadku spróbuj tail --follow = nazwa [nazwa pliku] (co powoduje, że tail okresowo otwiera plik na wypadek, gdyby jego nazwa została zmieniona). Zobacz gnu.org/software/coreutils/manual/html_node/…
Randy Orrison,
Nie, dzienniki się nie obracają. To ten sam plik.
DRZEWO
1

może mógłbyś tail -f [filename]zamiast tego spróbować ?

brandstaetter
źródło
4
Z mniej, możesz „wstrzymać ogon” (używając Ctrl-c), aby przejść do określonej linii i wznowić później (używając F). Dlatego w niektórych przypadkach jest on preferowany nad „tail-f”.
dogbane
tail -f działa, ale wolałbym pracować w mniej.
DRZEWO
Widzę. Nie wiedział tego.
brandstaetter
0

Robię less +F --follow-name. --follow-namepo prostu monitoruje plik o tej samej nazwie bez odbierania nadchodzących zmian w moim przypadku (CentOS 7).

Właściwie tworzę do tego alias:

Dodaj tę linię w /etc/profile.d/alias.sh:

alias lf="less +F --follow-name"

Zapisz i zrób to, aby użyć go teraz. . /etc/profile.d/alias.sh

WesternGun
źródło