tail -f 文件在重命名时停止拖尾

tail -f 文件在重命名时停止拖尾

我想tail -f提交文件,但是在之后会跟踪它mv

尾部手册页告诉我:-f意味着不--follow=descriptor应该mv改变 inode?

为什么tail -f重命名后停止工作?

答案1

阅读tail源代码后,看来它并没有无法读取重命名的文件,但无法监视文件状态。

更准确地说,tail似乎以这种(简化的)方式表现:

  1. 它读取文件直到最后;
  2. 然后设置一个inotify监视,以便在文件发生某些事情时得到通知;
  3. 当文件附加新内容时,再次读取至末尾;
  4. 然后跳回步骤 2。

当您移动文件时,inotify会通知tail,然后决定将文件从受监视文件列表中删除。这似乎是故意的,尽管我不清楚为什么会这样(我希望它在重命名后继续监视文件)。相关行似乎是这些

因此,问题不在于底层 Linux 操作系统,而在于tail处理文件重命名的方式。

相关内容