我用来tail -f a.txt
观看名为 的文件的更新a.txt
。
如果我使用第二个虚拟控制台之类的东西更新文件ls -a >> a.txt
,更改将在第一个虚拟控制台中实时显示。
如果我在第二个虚拟控制台中使用 Vim 更新文件,则更改将不会显示在第一个虚拟控制台中。
我不一定希望它在该窗口中触发更新 - 但为什么这不会更新运行命令的终端呢tail -f
?
答案1
如果您使用 编辑文件vim
,通常会将文件读入内存,然后写入新文件。所以tail
现在正在操作文件的过时副本(该副本保留在文件系统中,直到tail
(以及任何其他程序)停止使用它。
您可以tail
使用以下命令遵循文件名(而不是文件):
tail -F yourfile
请注意大写 F
。
答案2
我的理解是,通常在使用 进行编辑时vim
,您正在编辑文件的副本,当您将更改写入磁盘时,该副本会被移动到位。由于这是通过unlink
ing 原始文件并将move
新文件放入到位而发生的,tail
因此不会看到对原始文件的新更改。