【发布时间】:2019-10-21 16:26:08
【问题描述】:
我有一个脚本,它逐行监控日志文件并将检索到的值推送到其他地方(例如,到图形应用程序)。但是,日志文件名和/或路径可能会在午夜前后发生变化,例如,由于app 日志轮换(不是unix 日志轮换)和应用程序的EOD 程序。
例如/path/to/log/20191018/log.txt下的日志文件可以切换到/path/to/log/20191019/log.txt
在脚本中处理这种情况的最佳方法是什么?例如让tail命令开始跟随一个新文件?
tail -f "$file" | while read line
do case "$line" in
*"a_string"*) do_something
;;
...
...
esac
done
【问题讨论】:
-
最有可能的解决方案是
tail -F -
@Kamil 谢谢我认为这可以解决名称更改,但是更改路径呢?例如。当原始文件/路径仍然存在但新日志开始写入具有相同基本名称但在不同目录下的不同文件时?
-
getting written into a different file with same basename but under a different dir- 那么,您如何检测到呢?你怎么知道日志文件在哪个文件名和目录中?为什么任何软件会在运行时更改日志文件的路径? -
这与您所描述的内容完全不同。请编辑您的帖子并包含此类信息。所以,
inotifywaiton/path/to/log用于新目录,每次创建新目录时,切换到新日志文件。 -
这就是为什么传统的 UNIX 日志轮换系统总是写入同一个文件,然后只是在事后 rotate 到不同的带日期戳的名称的部分原因——这样@ 987654328@ 做了正确的事,因为最近的文件名是不变的。