
iftop
テキスト モード中に、サイクルせずにアクティブな接続のスナップショットを 1 回印刷するようにツールに指示するにはどうすればよいですか?
iftop -t -i eth2
答え1
どうやら方法はないようだ教えて iftop -t
1 つのチャンクを印刷し、ループしないようにします。
比較のために: はtop -b -n 1
あなたが望むことができる、関連するオプションです-n 1
。 これは別のツールですが、この例はツールがオプションをサポートしている場合にどれだけ簡単にできるかを示しています(注iftop
:-n
が、違う、無関係なオプション)。
それでも、出力を解析して最初のチャンクの後で停止することができます。私の Debian 10 では、iftop -t
各チャンクは多数の文字で構成される行で終了します=
。これは、^==
誤検出なしでチャンクの終了を検出するのに適した正規表現のようです。
このコマンドは最初のチャンクの後に終了します。
iftop -t -i eth2 | sed '/^==/ q'
あるいは:
iftop -t -i eth2 | awk '{print; if ($0 ~ "^==") exit}'
N 番目のチャンクの後に終了するには、より複雑なコードが必要です。次の例では、N は 3 です。n=3
必要に応じて調整してください。
iftop -t -i eth2 | awk -v n=3 '
BEGIN {if (n<=0) exit}
{
print
if ($0 ~ "^==") n--
if (n<=0) exit
}'
ノート:
awk
(またはsed
)が終了した場合、iftop
すぐには通知されません。壊れたパイプにさらに何かを書き込もうとしたときにのみ通知されます。つまり、コマンド全体が 、さらに別のチャンク(印刷されない)を生成するSIGPIPE
まで停止します。これは正常です。最適化iftop
iftop
この問題での最適化はあまり意味がありません。永遠に停止するわけではありません。比較してください。それがどのように意味をなすのかtail
。- コマンド全体がコンソールに出力される場合、出力がチャンクの途中で停止することがあります。この動作は、完全なチャンクが一時停止を挟んで表示される sole の出力とは異なります。原因は、と
iftop -t
の間のバッファリングです。私のテストでは、iftop
awk
stdbuf -oL iftop …
助けました。 iftop
いくつかのメッセージを stderr に出力します。 を使用しない限り、それらのメッセージはパイプを通過しませんiftop … 2>&1 | …
。