我遇到了一个需求,我需要持续监视一个预定义的模式(如错误消息)的实时(附加)文件,我打算使用tail -F [FileName] | grep "pattern" tail -F [FileName] | grep "pattern"并把它放在一些shell脚本来通知我。 我关心的是如何为一个大文件工作,说50 GB的大小,我想了解这种解决scheme将消耗多less系统资源。 总之,从资源利用的angular度来看,tail是如何工作/处理文件的。
tail不读整个文件。 当它可以时 ,它从最后开始,然后回溯,直到达到预期的行数。 但是,当它不能查找时,它会读取所有内容,例如从pipe道读取数据。
这可能不适用于您,但请记住tail -f跟踪文件描述符 而不是文件名 。 所以,如果你有例如日志旋转,它将停止,因为原来的文件已经停止改变。