デバッグ時にはしばしばkillall
killプロセスを使用します。システムで同じ名前のプロセスがより多く実行される可能性があるため、これは実際には悪い習慣です。
通常、私が終了しようとしているプロセスは、開始されたkillall
ときと同じ親(または祖父母)の子孫です。同じ端末または別のタブ(Konsole)の端末で起動されたプログラムを終了したいことがよくあります。
killall
範囲をこの端末で開始されたプロセスまたは同じ(大)親の子プロセスに制限するように指示する方法(または他のキラー)はありますか?
答え1
このセッション(現在のttyを制御端末として使用しているプロセス)のすべてのプロセスを終了するには、次の手順を実行します。
tty=`tty`; pkill -t "${tty#/dev/}"
それとももっと簡単です:
pkill -s 0
pkill(1) によると:
-s, --session sid,... Only match processes whose process session ID is listed. Ses- sion ID 0 is translated into pgrep's or pkill's own session ID.
-t
オプションはすべて-s
パターンと他のオプションと組み合わせることができます。pgrep -s0 -x foo
このセッションで指定されたプロセスのfoo
場合、残念ながら、それらpgrep
のどれもpkill
複雑なtcpdump
スタイルの述部をサポートしていません。