tail -f 是什么意思做?

tail -f 是什么意思做?

我错误地在终端执行了以下命令:

tail -f /logs/applications/logs*

我得到以下输出:

tail: file shrunk!
Error 0

我不确定到底发生了什么。我已经有一段时间没有跟踪目录中的文件数量了。有人可以解释一下到底发生了什么,我是否丢失了任何文件。

编辑:

不知道是不是巧合,我执行完代码后,数了一下目录下的文件数量,竟然是10个!

第一次看到数字10让我感到偏执......

答案1

我不确定到底发生了什么。

发生的情况是该文件被外部应用程序旋转。这很平常。实用程序如logrotate 旋转日志文件,即现有日志文件的内容被移动到另一个文件,并且现有的日志文件被删除冲压出来在应用程序再次开始写入之前。

tail确定跟踪文件的大小已减小时,它会打印您观察到的消息并继续跟踪文件。

引用自tail invocation的部分GNU coreutils 手册:

无论使用哪种方法,如果确定跟踪的文件已缩小,tail则会打印一条消息,说明文件已被截断,并从新确定的端点继续跟踪文件的末尾。

答案2

不,您没有丢失任何文件,因为tail命令仅显示文件的末尾。

传递/logs/applications/logs*tail与传递多个文件/文件夹(任何与模式匹配的内容)相同/logs/applications/logs*。由于此模式也可以通过目录进行匹配,因此在这些情况下tail将无法工作。

相关内容