Files

用 Vim 編輯文本文件不會更新 tail -f

  • July 21, 2017

tail -f a.txt用來觀看名為a.txt.

如果我ls -a >> a.txt在第二個虛擬控制台中使用類似的東西更新文件,更改將在第一個虛擬控制台中實時顯示。

如果我在第二個虛擬控制台中使用 Vim 更新文件,更改將不會顯示在第一個虛擬控制台中。

我不一定期望它會在該視窗中觸發更新 - 但為什麼這不會更新執行tail -f命令的終端呢?

如果您使用 編輯文件vim,通常它會將文件讀入記憶體,然後寫入一個新文件。因此tail,現在正在對文件的過期副本(該文件保留在文件系統中,直到tail(和任何其他程序)停止使用它為止)進行操作。

您可以使用tail以下命令遵循文件名(而不是文件):

tail -F yourfile  

注意大寫 F

我的理解是,通常在使用 編輯時vim,您正在編輯文件的副本,當您將更改寫入磁碟時,該副本會移動到位。由於這是通過unlinking 原始文件和moveing 新文件來實現的,tail因此不會看到對原始文件的新更改。

引用自:https://unix.stackexchange.com/questions/379982