我错误地在终端执行了以下命令:
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
将无法工作。