Files
用 Vim 編輯文本文件不會更新 tail -f
我
tail -f a.txt
用來觀看名為a.txt
.如果我
ls -a >> a.txt
在第二個虛擬控制台中使用類似的東西更新文件,更改將在第一個虛擬控制台中實時顯示。如果我在第二個虛擬控制台中使用 Vim 更新文件,更改將不會顯示在第一個虛擬控制台中。
我不一定期望它會在該視窗中觸發更新 - 但為什麼這不會更新執行
tail -f
命令的終端呢?
如果您使用 編輯文件
vim
,通常它會將文件讀入記憶體,然後寫入一個新文件。因此tail
,現在正在對文件的過期副本(該文件保留在文件系統中,直到tail
(和任何其他程序)停止使用它為止)進行操作。您可以使用
tail
以下命令遵循文件名(而不是文件):tail -F yourfile
注意大寫
F
。
我的理解是,通常在使用 編輯時
vim
,您正在編輯文件的副本,當您將更改寫入磁碟時,該副本會移動到位。由於這是通過unlink
ing 原始文件和move
ing 新文件來實現的,tail
因此不會看到對原始文件的新更改。