Tail
“tail -f”和“tail -F”有什麼區別?
我從來沒有使用過
tail -F
命令,而是一直使用tail -f
,但是有人告訴我這-F
更好,沒有太多解釋。我查找了 tail 命令的手冊頁。
-f output appended data as the file grows; -F Same as --follow=name --retry --retry Keep trying to open a file even when it is or becomes inaccessible
很容易理解 lower 的
-f
作用,但我不遵循大寫-F
試圖做的事情。我很感激有人可以向我解釋這些差異。
您描述了 GNU
tail
實用程序。這兩個標誌之間的區別在於,如果我打開一個文件,例如一個日誌文件,如下所示:$ tail -f /var/log/messages
…如果我的機器上的日誌輪換工具決定在我查看寫入它的消息時輪換該日誌文件(“旋轉”意味著刪除或移動到另一個位置等),我看到的輸出將只是停止。
如果我這樣打開文件
tail
:$ tail -F /var/log/messages
…再次,文件被旋轉,輸出將繼續在我的控制台中流動,因為
tail
一旦文件再次可用就會重新打開文件,即當寫入日誌的程序開始寫入新/var/log/messages
的.在免費的 BSD 系統上,沒有
-F
選項,但tail -f
會像tail -F
在 GNU 系統上一樣,不同之處在於您收到消息tail: file has been replaced, reopening.
當您正在監視的文件消失並重新出現時,在輸出中。
你可以測試一下
在一個 shell 會話中,執行
$ cat >myfile
現在將等待您輸入內容。繼續輸入一些亂碼,幾行。它將全部保存到文件
myfile
中。在另一個shell 會話中(可能在另一個終端中,不中斷
cat
):$ tail -f myfile
這將
myfile
在控制台中顯示(結束)內容。如果您返回第一個 shell 會話並輸入更多內容,則該輸出將立即顯示tail
在第二個 shell 會話中。
cat
現在按退出,Ctrl+D
然後刪除myfile
文件:$ rm myfile
然後再次執行貓:
$ cat >myfile
…然後輸入一些東西,幾行。
使用 GNU
tail
,這些行將不會出現在第二個 shell 會話中(tail -f
仍在執行的地方)。重複練習
tail -F
並觀察差異。