Killallはこの端末でのみ機能します。

Killallはこの端末でのみ機能します。

デバッグ時にはしばしばkillallkillプロセスを使用します。システムで同じ名前のプロセスがより多く実行される可能性があるため、これは実際には悪い習慣です。

通常、私が終了しようとしているプロセスは、開始された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スタイルの述部をサポートしていません。

関連情報