簡體   English   中英

tail -f 在內部如何工作

[英]How does tail -f works internally

如果我運行這個命令:

tail -f file.txt

我會實時看到變化。

我的問題是:它是如何工作的? 有沒有辦法在每次文件更改時通知進程?

或者它是一個循環,就像 watch 命令一樣?

謝謝

使用 --follow (-f) 時,tail 默認跟隨文件描述符,這意味着即使 tail 的文件被重命名,tail 也會繼續跟蹤它的末尾。 當你真的想跟蹤文件的實際名稱而不是文件描述符(例如,日志輪換)時,這種默認行為是不可取的。 在這種情況下使用 --follow=name 。 這導致 tail 以適應重命名、刪除和創建的方式跟蹤命名文件。

tail -f 命令的工作原理是不斷輪詢文件的更改並打印添加到文件末尾的任何新數據。 當您運行 tail -f file.txt 時,tail 命令會打開文件並讀取最后幾行(默認為 10 行)。 然后它等待新數據添加到文件中,當它檢測到文件已被修改時,它會讀取新數據並將其打印到終端。 此過程無限期地繼續,直到您終止 tail 命令。

實現此行為的一種方法是使用循環來定期檢查文件的更改並打印任何新數據。 watch命令以類似的方式工作,盡管它定期運行指定的命令並在終端中顯示 output。

還有其他方法可以監視文件的更改。 例如,一些操作系統提供的 API 允許在文件被修改時通知進程 這比連續輪詢文件更有效,因為它允許進程在發生更改時得到通知,而不必不斷地檢查它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM