Opisujesz tail
narzędzie GNU . Różnica między tymi dwiema flagami polega na tym, że jeśli otworzę plik, na przykład plik dziennika, taki jak ten:
$ tail -f /var/log/messages
... a jeśli funkcja obracania dziennika na moim komputerze zdecyduje się obrócić ten plik dziennika podczas oglądania zapisywanych w nim wiadomości („obrót” oznacza usunięcie lub przeniesienie w inne miejsce itp.), wynik, który zobaczę, będzie po prostu zatrzymać.
Jeśli otworzę plik w tail
ten sposób:
$ tail -F /var/log/messages
... i ponownie plik jest obracany, dane wyjściowe będą nadal płynąć w mojej konsoli, ponieważ tail
ponownie otworzą plik, gdy tylko stanie się ponownie dostępny, tj. gdy program (programy) zapisujący dziennik zaczną zapisywać do nowego /var/log/messages
.
W darmowych systemach BSD nie ma -F
opcji, ale tail -f
będzie się zachowywać tak jak tail -F
w systemach GNU, z tą różnicą, że otrzymasz komunikat
tail: file has been replaced, reopening.
w danych wyjściowych, gdy monitorowany plik znika i pojawia się ponownie.
MOŻESZ TESTOWAĆ
W jednej sesji powłoki wykonaj
$ cat >myfile
To będzie teraz czekać na wpisanie rzeczy. Po prostu napisz bełkot, kilka wierszy. Wszystko zostanie zapisane w pliku myfile
.
W innej sesji powłoki (może w innym terminalu, bez przerywaniacat
):
$ tail -f myfile
Spowoduje to wyświetlenie (końca) zawartości myfile
konsoli. Jeśli wrócisz do pierwszej sesji powłoki i wpiszesz coś więcej, dane wyjściowe zostaną natychmiast pokazane przez tail
w drugiej sesji powłoki.
Teraz zamknąć cat
naciskając Ctrl+Di usunąć ten myfile
plik:
$ rm myfile
Następnie ponownie uruchom kota:
$ cat >myfile
... i wpisz coś, kilka wierszy.
W GNU tail
te linie nie pojawią się w drugiej sesji powłoki (gdzie tail -f
nadal działa).
Powtórz ćwiczenie tail -F
i obserwuj różnicę.