終了していない入力ソースの行数を計算する方法はありますか?たとえば、要求の数を計算するために、一定期間にわたって以下を実行したいとします。
ngrep -W byline port 80 and dst host 1.2.3.4 | grep ":80" | wc
明らかにこれはうまくいきません。私がそれをCtrl殺したときC、私はそれから何の結果も得られませんwc
。可能であれば、ファイルの生成を避けたい。
ベストアンサー1
Ctrl端末で+を入力すると、フォアグラウンドプロセスグループに送信されます。イベントで生き残って出力を生成するには、信号を無視する必要があります。CSIGINT
wc
解決策は、サブシェルで実行し、wc
実行する前に親シェルをSIGINT
無視するように設定することですwc
。 wc
この設定は継承され、SIGINT
プロセスグループに送信されても消えません。パイプの残りの部分は消え、wc
もう一方の端ではプロセスなしでパイプからの読み取りのみが行われます。これによりパイプがwc
表示され、EOF
その数を印刷して終了します。
ngrep -W byline port 80 and dst host 1.2.3.4 | grep ":80" | (trap '' INT ; wc)