現在、単純な tail コマンドを使用して、nginx のアクセス ログを追跡しています。
tail -f access.log
そのログに追加されたエントリの現在の 1 秒 / 1 分あたりの平均速度を表示できるようにしたいと考えています。テールとパイプを別のコマンド (grep、sed、wc) に使用することで簡単に実行できますか、またはこのデータを取得する別の方法を考える必要がありますか? ありがとう!
リアルタイムで継続的に更新される 1 秒あたりの行数を取得するには、次のpv
ユーティリティを使用します。
tail -f -n 0 access.log | pv -lr > /dev/null
pv
入力がなくなるまで、端末に更新を継続的に書き込むことに注意してください。行が追加される速度のスナップショットが必要なだけの場合、状況はもう少し複雑になります。これが私の刺し傷です(サンプル時間は5秒です):
tail -f -n 0 access.log 2>/dev/null | perl -e '$SIG{ALRM} = sub { print $x/5.0; exit(0) }; alarm 5.0; while(<>) { $x++ }'