在我的应用程序中,我用来tail -q -f -n +1 [file name]
读取文件(动态增长的文件)的当前数据并继续读取新块直到结束。但该命令永远不会退出。它在后台保持活力。
追加到文件完成后如何使其退出?
答案1
整个要点tail -f
是,它永远等待新数据出现在其输入文件或流上(甚至tail -F
可以自动检测到输入文件已旋转,并重新打开文件名)。
如果您想要比这更奇特的东西,您就必须自己编写。如果您需要的只是tail
在启动后杀死X 秒,您可以使用包装脚本或函数tail
从timeout
coreutils 运行。
如果您需要更复杂的东西(例如,在匹配特定模式时退出,或者在 X 秒后没有看到任何新文本,或者当其他程序退出/不再出现在系统的进程列表中时),您可以编写自己的版本tail
例如,使用 Perl 的文件::尾巴模块。该模块非常适合编写监视脚本,用于监视日志文件并在看到某些模式时采取某些操作。
其他语言也有类似的功能(例如,对于 Python,请参阅获取文件的最后n行,类似于tail)。你甚至可以在 bash 中破解一些东西,但这几乎肯定会导致较差的结果,需要更多的工作。