解決策 1:
pv
あなたの命令です! P イペ V iewer は、通過するデータに関する統計を出力し、stdin を stdout に直接パイプするため、パイプラインのどこでも実行できます。例:
tail -f /var/log/nginx/access.log | pv --line-mode --rate > /dev/null
pv
コマンドは、現在の 1 秒あたりの行数 (デフォルトは 1 秒あたりのバイト数) を stderr に出力します。これは、この特定のデータ ソース (Nginx の既定のログ ファイル) については、1 秒あたりの着信 Web 要求に相当します。カウントのみを気にするので、stdout を /dev/null
にパイプします。 .次のようなオプションもあります:
-b
(総行数),--average-rate
(開始以来の平均レート)、および--timer
(パイプの経過時間を追跡します)。
--line-mode
と言わない場合 、バイトをカウントします。これはおそらくサーバー ログに必要なものではありませんが、他の場所で便利になる可能性があります。
最後のメモ:... | pv -lb > file.txt
... | tee file.txt | awk '{printf "\r%lu", NR}'
によく似ています 、これも行を数えるのに便利ですが、 pv
呼び出しははるかに短いですが、出力はそれほどエキサイティングではありません — pv
デフォルトでは毎秒更新されますが、その awk
コマンドは継続的に更新されます。
解決策 2:
logtop
を試してみるといいかもしれません ?
tail -f foobar.log |logtop
解決策 3:
watch -n 3 "wc -l logfile"
マニュアルページ
watch - プログラムを定期的に実行し、出力を全画面表示します。デフォルトでは、プログラムは 2 秒ごとに実行されます。 -n または --interval を使用して別の間隔を指定してください。