2013-03-19 23 views
1

有多個進程登錄到的目錄,並且我想尾部選擇進程的最新文件。尾部匹配所選規則的最新文件

在〜/ .bashrc中我已經加入來自以下

function __taillog { 

     tail -f $(find $1 -maxdepth 1 -type f -printf "%[email protected] %p\n" | sort -n | tail -n 1 | cut -d' ' -f 2-) 
} 

alias taillog='__taillog' 

https://superuser.com/questions/117596/how-to-tail-the-latest-file-in-a-directory

日誌文件目錄的一個例子

-rw-r--r-- 1 genesys genesys 2284 Mar 19 16:34 gdalog.20130319_163436_906.log 
-rw-r--r-- 1 genesys genesys 131072 Mar 19 16:34 gdalog.20130319_163436_906.snapshot.log 
-rw-r--r-- 1 genesys genesys 10517 Mar 19 16:54 lcalog.20130319_163332_719.log 
-rw-r--r-- 1 genesys genesys 131072 Mar 19 16:54 lcalog.20130319_163332_719.snapshot.log 
-rw-r--r-- 1 genesys genesys 3792 Mar 19 16:37 StatServer_TLSTest.20130319_163700_703.log 
-rw-r--r-- 1 genesys genesys 160562 Mar 19 16:52 StatServer_TLSTest.20130319_163712_045.log 
-rw-r--r-- 1 genesys genesys 49730 Mar 19 16:54 StatServer_TLSTest.20130319_165217_402.log 
-rw-r--r-- 1 genesys genesys 53960 Mar 20 09:55 StatServer_TLSTest.20130319_165423_702.log 
-rw-r--r-- 1 genesys genesys 131072 Mar 20 09:56 StatServer_TLSTest.20130319_165423_702.snapshot.log 

所以到尾部都StatServer命令將是

taillog /home/user/logs/StatServer* 

,它將尾部在給定的路徑

的問題是尾部顯示一些文件輸出,但不顯示任何更新時,該日誌文件被追加該應用程序的最新文件。如果運行以下命令日誌正確

tail -f $(find /home/user/logs/StatServer* -maxdepth 1 -type f -printf "%[email protected] %p\n" | sort -n | tail -n 1 | cut -d' ' -f 2-) 

尾部分如何添加此命令爲bash函數,然後調用它的別名導致所期望它不工作。

任何建議更好的方式是值得歡迎的。

+0

它工作?問題是什麼? – fedorqui 2013-03-19 05:07:19

+0

另外,你的查找鏈看起來相當複雜,我只是用ls -t來做這個。 – themel 2013-03-19 05:36:43

+0

尾部確實顯示日誌文件的一部分,但日誌文件由應用程序附加時不會更新。 – oden 2013-03-19 22:54:30

回答

1

我相信你應該運行這個命令:

taillog /home/user/logs 

當你說/home/user/logs/this_app*你傳遞所有的模式作爲參數匹配taillog這一點,只使用第一個參數,即$1的文件,以及命令最終轉化爲tail -f $1

相反$1應該是目錄,其中find應該在該目錄級別中的文件(即你的情況/home/user/logs),然後通過管道將結果sorttailcut

+0

由於您的答案,我已經添加了更多的信息到問題,不認爲問題是足夠清楚(對不起)。結果你的回答沒有幫助。 – oden 2013-03-19 23:42:36

0

我沒有任何問題在linux/bash上運行你的taillog函數。也許日誌輸出被緩衝,所以變化不會馬上被寫入?您可以嘗試關閉此StatServer的[日誌]緩衝選項。