【问题标题】:tail -f logfile is not showing the newly added entriestail -f 日志文件未显示新添加的条目
【发布时间】:2015-08-13 10:57:13
【问题描述】:

我有一个log.file的日志文件内容是

123
123
321
312
123
412
151

我已经完成了tail -f log.file。在其他会话中,我打开了相同的日志文件并附加了更多值。我的假设是 tail -f log.file 应该显示新附加的值,但它没有显示。

【问题讨论】:

  • 请回答,并输入-1
  • 您是否在其他会话中保存了文件?
  • 是的,我做到了。我注意到还有一种行为,例如 echo 'aaaa' >> 日志文件反映了 tail -f 日志文件输出,但在 vi 编辑器中我写了 (:w) 它没有反映在 tail -f 日志文件中
  • 可能是交换文件吗?你试过退出吗?我发现了一些更有趣的东西。保存文件使我的尾巴退出,返回状态为“0”,即成功
  • @user60679:tail -F log.file 工作吗?

标签: linux file tail


【解决方案1】:

这取决于您打开文件和追加的方式。您必须确保更改“就地”发生

这将起作用:

echo >> logfile

这不会:

vi logfile

为什么不呢? vi 相当于:

mv logfile logfile~
echo >> logfile

在这一系列命令之后,tail -f 将跟随logfile~;它不会看到新创建的文件。

这是因为tail 没有跟在名字后面;它遵循名称更改时不会更改的文件描述符。这种方法允许 Unix 各种巧妙的技巧(例如 echo 附加到文件,而 tail 将其打开)。

tail -F 会起作用,因为它注意到文件已重命名。

【讨论】:

  • @Nishant:你如何修改文件?如果您就地修改,它可以工作。但是你可能有一个特殊版本的tail;我说的是 coreutils 包中的 GNU Tail。
  • 我在一个 putty 会话中使用 vi 打开文件并对其进行了修改,而 tail -f file.txt 在另一个会话中运行。
  • @Nishant:很有趣。我不希望这会奏效。 vi 制作文件的工作副本(通常是备份)。这取决于您如何配置它。此外,vi 实际上可能是 vim
猜你喜欢
  • 1970-01-01
  • 2017-07-12
  • 2012-07-05
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 2013-12-08
  • 2016-05-22
  • 1970-01-01
相关资源
最近更新 更多