終了しない入力の行数を計算します。

終了しない入力の行数を計算します。

終了していない入力ソースの行数を計算する方法はありますか?たとえば、要求の数を計算するために、一定期間にわたって以下を実行したいとします。

ngrep -W byline port 80 and dst host 1.2.3.4 | grep ":80" | wc

明らかにこれはうまくいきません。私がそれをCtrl殺したときC、私はそれから何の結果も得られませんwc。可能であれば、ファイルの生成を避けたい。

ベストアンサー1

Ctrl端末で+を入力すると、フォアグラウンドプロセスグループに送信されます。イベントで生き残って出力を生成するには、信号を無視する必要があります。CSIGINTwc

解決策は、サブシェルで実行し、wc実行する前に親シェルをSIGINT無視するように設定することですwcwcこの設定は継承され、SIGINTプロセスグループに送信されても​​消えません。パイプの残りの部分は消え、wcもう一方の端ではプロセスなしでパイプからの読み取りのみが行われます。これによりパイプがwc表示され、EOFその数を印刷して終了します。

ngrep -W byline port 80 and dst host 1.2.3.4 | grep ":80" | (trap '' INT ; wc)

おすすめ記事