複数のプロセスがログを記録するディレクトリがあり、選択したプロセスの最新のファイルを追跡したい。
~/bashrc に以下を追加しました
function __taillog {
tail -f $(find $1 -maxdepth 1 -type f -printf "%T@ %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 "%T@ %p\n" | sort -n | tail -n 1 | cut -d' ' -f 2-)
このコマンドを bash 関数として追加し、エイリアスから呼び出すと、意図したとおりに動作しないことがあります。
より良い方法に関する提案は大歓迎です。