Używam tail -f a.txt
do oglądania aktualizacji pliku o nazwie a.txt
.
Jeśli zaktualizuję plik przy użyciu czegoś takiego jak ls -a >> a.txt
w drugiej konsoli wirtualnej, zmiany zostaną wyświetlone w czasie rzeczywistym w pierwszej.
Jeśli zaktualizuję plik za pomocą Vima w drugiej konsoli wirtualnej, zmiany nie zostaną wyświetlone w pierwszej.
Niekoniecznie spodziewam się, że spowoduje to aktualizację w tym oknie - ale dlaczego dokładnie nie aktualizuje terminalu uruchamiającego tail -f
polecenie?
tail -f
sprawdza dołączenia.tail -F
sprawdza nazwy plików.Odpowiedzi:
Jeśli edytujesz plik
vim
, zwykle wczytuje on plik do pamięci, a następnie zapisuje nowy plik. Taktail
pracuje teraz na nieaktualny kopią pliku (który pozostaje w systemie plików do czasutail
(i każdy inny program) przestaje go używać.Możesz
tail
śledzić nazwę pliku (zamiast pliku), używając:Zwróć uwagę na wielkie litery
F
.źródło
tail -F
Pracuje! Konsola wyświetla teraz komunikat „a.txt został zastąpiony: po zakończeniu nowego pliku” i odpowiednio się aktualizuje. Dzięki!Rozumiem, że zazwyczaj podczas edycji za pomocą
vim
edytujesz kopię pliku, która jest przenoszona na miejsce podczas zapisywania zmian na dysku. Ponieważ dzieje się tak przezunlink
włożenie oryginału imove
włożenie nowego na miejsce,tail
nie widać nowych zmian w oryginalnym pliku.źródło