【发布时间】:2012-01-28 16:20:27
【问题描述】:
我有一个充满滚动日志文件的目录,我希望能够在这些文件上使用 tail。
文件命名如下:
name modified
00A.txt Dec 27 19:00
00B.txt Dec 27 19:01
00C.txt Dec 27 19:02
00D.txt Dec 27 19:03
在较旧的 unix 系统上,我正在尝试编写一个 shell 脚本,该脚本将跟踪特定目录中最近修改的文件,如果该文件被管理性关闭(滚动到下一个文件),我想要程序自动开始拖尾新文件,而我不必打破尾巴重新运行。
tail -100f `ls -t | head -1`
考虑到上述文件名,所需的行为将如下所示:
./logtailer.sh
然后脚本将开始跟踪 00D.txt。一旦记录器完成对 00D.txt 的写入并且最新的日志文件现在命名为 00E.txt,程序就会自动开始跟踪该文件。
可以通过观察 tail 的输出文本“File Administratively Closed”然后再次运行以下命令来编写此脚本。
tail -100f `ls -t | head -1`
有没有比观察文本“文件管理关闭”更优雅的方法来做到这一点?如何在 shell 脚本中逐行读取 tail 的输出?
编辑:我应该解释一下,在这个系统上,tail 的 -F 标志对我来说不是一个选项。它使用不包含此功能的不同版本的 tail。 操作系统版本 - Solaris 10
【问题讨论】: