我遇到了一个需求,我需要持续监控一个实时(附加)文件是否存在预定义模式(例如错误消息),我打算使用tail -F [FileName] | grep "pattern"
它并将其放入某个 shell 脚本中以通知我。我担心的是它将如何处理一个 50 GB 大小的大文件,我想了解这种解决方案将消耗多少系统资源。简而言之,tail 如何从资源利用率的角度工作/处理文件。
答案1
tail
不会读取整个文件。当它能,它从末尾开始,然后回溯,直到达到预期的行数。然而,它做当无法查找时读取所有内容,例如从管道读取。
这可能不适用于你,但请记住,tail -f
跟踪文件描述符 不是文件名。因此,如果您有日志轮换,它就会停止,因为原始文件已停止更改。