我最近正在研究使用来tail -f
监控一些文本文件,如下所示:tail -f /var/sometext
。
但是,当我进行一些测试时,它似乎不起作用。我所做的是创建一个新文件并运行:tail -f /home/name/text
然后,我在 vim 中打开日志并进行了一些编辑,保存了它,但 tail 似乎没有“看到”更改。
奇怪的是,运行echo "hello" >> /home/name/text
似乎工作正常(tail 看到变化)。我读到过一些文章说这与文件描述符和保存文件时创建的新 inode 有关。
有人能帮我解释一下吗?我不太明白它是如何工作的,但我知道文件描述符是什么。
答案1
-f
按照 inode 顺序排列。如果您想要按照名称顺序排列(例如,当程序完全重新创建文件时),则可以使用-F
。
答案2
tail -f
监视文件末尾,当文件末尾移动时,它会打印新内容并等待文件末尾再次移动。换句话说,文档中间的更改不会被找到tail -f
,只能被追加。
答案3
事实上,真实的故事是:
tail -f
监控内存,而不是磁盘。但它无法访问受保护的内存,例如对文本编辑器打开的文件的编辑。