私は基本的に大きなファイルであるログファイルradius.log
を取得しています。複数のユーザーのログが含まれています。PHPスクリプトでtailとgrepを使用する
最初のコマンド
tail -n 20 /tmp/radius.log
これが最後の20件のログを返します。それがコマンドから期待されたものです。
2番目のコマンドは、
tail -n 20 /tmp/radius.log | grep "username"
私は何を達成しようとしていることだけでなく、ユーザごとに、最後の20件のログを取得することです。 ここで私が問題に直面しているところです。ユーザーの最後のログ(最後の1ログ)のみが返されます。最後の10ログではusername
しか検索されないため、これも予想されます。
返される行数を200に増やすと、残りのログが表示されます。
tail -n 20 /tmp/radius.log | grep "username"
しかし、特定のユーザーの最後の20ログのみを取得するコマンドはありますか?
grep "username" /tmp/radius.log | tail -n 20
このソリューションは完全に正常に動作します。まず、すべてのログをusername
に取得し、最後に20個のログを出力します。しかし、これは時間のかかるプロセスです。
まだ効率的なものを試しています。
radius.logは無限大になりますか? Grepはファイルが大きくなるほど遅くなります。ログをできるだけ小さく保つと、検索がより迅速になります。 – GreensterRox