2013-06-21 86 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