我正在使用tail -f a.txt一个名为a.txt.
如果我使用类似于ls -a >> a.txt在第二个虚拟控制台中的内容更新文件,更改将实时显示在第一个中。
如果我在第二个虚拟控制台中使用 Vim 更新文件,更改将不会显示在第一个控制台中。
我不一定期望它在该窗口中触发更新 - 但为什么这不更新运行tail -f命令的终端?
Bob*_*ger 31
如果您使用 编辑文件vim,通常它会将文件读入内存,然后写入一个新文件。因此tail,现在正在对过时的文件副本进行操作(该副本保留在文件系统中,直到tail(和任何其他程序)停止使用它为止。
您可以使用tail以下命令跟随文件名(而不是文件):
tail -F yourfile
Run Code Online (Sandbox Code Playgroud)
注意大写 F。
我的理解是,通常在使用 进行编辑时vim,您正在编辑文件的副本,当您将更改写入磁盘时,该副本会移动到位。由于这是unlink通过将原始文件move放入并将新文件放入适当位置而发生的,因此tail不会看到对原始文件的新更改。