tail
特定のファイルが含まれているか除外された3つの異なるフォルダに住みたいです。
フォルダ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
1つのコマンドで3つの異なるフォルダにある特定のファイルをどのように含めて除外できますか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
答え1
使用私の答え到着SUに関するあなたの質問も変わりません。find
探しているファイルを見つけるには、3つのコマンドを作成します。それから:
{ find … -print0 ; find … -print0 ; find … -print0 ; } | xargs -r -0 tail -F
メモ:
-F
このため:tail -f
ログファイルを循環する方法は?find
コマンドは一度だけ実行されます。一致する名前の新しいファイルが表示されますが、その時点で存在しない場合、そのtail
ファイルは無視されます。つまり、tail
起動すると、すべてのパラメータが固定され、生成されるファイルはそのパラメータに含まれません。- 結果フォームが
find
次を超える場合限界その後、xarg
複数が実行されますtail
(ただし、デフォルトでは並列には実行されません)。もちろん、あなたはこれをしたくありません。find
適切な数のファイルを見つけて制限を超えないようにしてください。 find -print0
そしてxargs -r -0
持ち運びが簡単ではありません。あなたがタグ付けしましたUbuntu;彼らはUbuntuで働いています。
答え2
必要なすべてのファイルをテーリングします...各テールをファイルに出力します...新しいファイルをテーリングします。
tail -f /var/log/large.log > ~/full.log && tail -f /var/log/medium.log > ~/full.log && tail -f ~/full.log
コマンドで実行できますが、最初は少し奇妙に見えますが、必要に応じて別のttyで実行してから見やすくなるようにログ全体を追跡できます。