(tcpdump | awk '{print $1}') & curl -s http://example.com > /dev/null kill $! cURLリクエストが終わった時に tcpdump を殺したい!$!で殺せるのは()を司るサブシェルだけだし…さてどうする? 解決策 プロセス単位ではなくジョブ単位で殺す 俺、なんでサブシェル上で動かしてるんだ!? ってことで原点回帰します。 %%は同一シェルプロセス内で最後に実行したバックグラウンドジョブを意味する ジョブとプロセスは1対1にしかならないと勝手に思い込んでいたけど、このようにサブシェルに載せる必要もなく2プロセスを1ジョブにまとめることが出来る。また、ジョブに対してのkillは、ジョブに含まれるプロセス全てに対するkillとして実行されるようだ。 …ただ、先頭プロセス以外の死に方が若干変わってしまう点にだけ注意。役目を終