Linux
來自不同文件夾的實時尾部,包含和排除文件
我想
tail
從三個不同的文件夾中生活,其中包含和排除某些文件。文件夾 1:
- 路徑:/var/www/app/var/log/
- 僅排除:file1.log & file2.log
文件夾 2:
- 路徑:/var/log/web/log/
- 僅包括:error.log
文件夾 3:
- 路徑:/var/log/service/log/
- 僅包括:app1.error.log & app2.error.log
tail
在一個命令中包含和排除某些文件的情況下,我將如何從三個不同的文件夾中尾隨?tail -f ???
到目前為止嘗試過
tail -f /var/www/app/var/log/!(file1,file2).log /var/log/web/log/error.log /var/log/service/log/{app1,app2}.log
但這不起作用。我覺得需要使用
find
+tail
使用我對您在 SU 上的不那麼不同的問題的回答來創建三個
find
命令,這些命令將找到您所追求的文件。然後:{ find … -print0 ; find … -print0 ; find … -print0 ; } | xargs -r -0 tail -F
筆記:
-F
因為這個:How to do atail -f
of log rotate files?find
命令只執行一次。如果出現一個新文件,其名稱本應匹配但當時不存在,tail
則將忽略它。換句話說:當tail
開始時,它的所有參數都是固定的,要成為的文件不在其中。- 如果結果表單
find
s 超過限制,則將xarg
執行多個tail
(預設情況下不是並行)。你當然不想要這個。希望您find
的 s 會找到合理數量的文件,並且不會超過限制。find -print0
並且xargs -r -0
不便攜。你標記了 ubuntu;在 Ubuntu 中,它們可以工作。