2013-06-21 51 views
1

我一直在试图找到一种方法,使tail等待文件被创建,然后开始拖尾他们。如何让尾巴等待文件被创建之前,他们尾巴

例如,我们假设我有一个尚未创建的logs目录,但我的应用程序会创建它。假设我有另一个运行tail -F logs/*.log的进程,并且在创建它们后立即开始拖拽所有文件。我会怎么做呢?

另一件事:如果tail拖尾了一些被删除的文件,是否有可能让它再次开始拖尾,如果它被重新创建?

+1

重复在Unix.SE上:[在整个目录中监视文件(ala tail -f)(甚至是新文件)](http://unix.stackexchange.com/questions/39729/monitor-files-ala-tail -f-in-an-entire-directory-even-new-ones) – Koterpillar

+0

谢谢!我看了一下并安装了它。我在你提供的链接中尝试了这个例子,但是我似乎无法让它起作用。你介意提供一些更多的解释和例子吗? – carlspring

+0

那么这个例子发生了什么? – Koterpillar

回答

2

有了一定的粗糙度,这个工程:

while inotifywait -q .; do kill $PID; tail -F -n 0 * & PID=$!; done 

一旦进入目录的变化的话,就是tail命令被重新启动。

+0

很酷的答案! :) – carlspring

0

另一件事:如果拖尾拖尾了一些被删除的文件,是否有可能让它再次开始拖尾,如果它被重新创建?

虽然你是tail某些文件被截断并重新创建; tail命令自动处理它。您无需为该特定文件重新发出tail命令。

+0

只有目录尚未被删除,这才是真实的。一旦它被删除,'tail'报告它并停止寻找那里的变化。如果您的应用程序重新创建文件夹,“tail”将继续滚动数据。 – carlspring