tail -f不跟踪文件更改


13

我最近正在研究tail -f如何监视一些文本文件:tail -f /var/sometext

但是,当我做一些测试时,它似乎不起作用。我做的是我创建了一个新文件并运行:tail -f /home/name/text然后,我在vim中打开日志并进行了一些编辑,保存了它,似乎尾巴没有“看到”变化。

奇怪的是,运行echo "hello" >> /home/name/text似乎工作正常(尾部看到变化)。我在某处读到这与文件描述符和保存文件时创建的新inode有关。

有人可以帮我解释一下吗?我不太明白这实际上是如何工作的,但我知道文件描述符是什么。

Answers:


29

-f以下是inode。如果要按名称后跟,例如程序完全重新创建文件,则使用-F


整洁,我从来不知道。如果你一直使用它们,甚至(特别是?)阅读公用事业的联机帮助页也是值得的!
莱尔

1

tail -f监视文件的结尾,当文件结束移动时,它会打印新内容并等待文件结束再次移动。换句话说,tail -f不会找到文档中间的更改,只会追加。


-1

实际上,真实的故事是:

tail -f监视内存,而不是磁盘。但它无法访问受保护的内存,例如编辑文件编辑器打开文件。


tail -f命令对文件(打开文件后的文件描述符)进行操作。虽然事实上文件的新修改仍然在内存(缓冲区,缓存)中并不重要。tail仍然通过文件描述符访问该文件。文件的修改方式无关紧要。--- Ignacio Vazquez-Abrams的答案是正确的 - 编辑器不会修改当前文件(打开tail),它会将更改保存到与旧文件同名的新文件中。
pabouk
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.